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

Disassembly:
sub esp, 0x248
push ebx
mov ebx, dword [esp + 0x250]
push ebp
push esi
mov esi, dword [esp + 0x25c]
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x34]
push edi
push eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x90], 0
call fcn.004565a0
lea ecx, [esp + 0x20]
add esp, 4
push ecx
call fcn.004565a0
lea edx, [esp + 0xc0]
add esp, 4
push edx
call fcn.004565a0
add esp, 4
cmp dword [esi + 0x28], 1
jne 0x40c45a
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jne 0x40c45a
call fcn.0040bdb0
lea edi, [esi + 0xc]
push esi
push edi
call fcn.00456920
add esp, 8
push 0x51a9e0
test eax, eax
jne 0x40c492
lea eax, [ebx + 0x24]
push eax
call fcn.004b80e6
mov ebp, eax
call fcn.0044cfb0
push eax
push str.nfs:_commencing_snfs_on_c_d_primitive_factor:
push ebp
call fcn.00443960
add esp, 0x14
push edi
jmp 0x40c4b4
lea ecx, [ebx + 0x24]
push ecx
call fcn.004b80e6
mov edi, esi
mov ebp, eax
call fcn.0044cfb0
push eax
push str.nfs:_commencing_snfs_on_c_d:
push ebp
call fcn.00443960
add esp, 0x14
push esi
push 0x5ad6dc
push ebp
call fcn.00457f00
add esp, 0xc
push ebp
call fcn.004b8276
mov ebp, dword [esi + 0x20]
mov eax, ebp
cdq
mov ecx, 0xf
idiv ecx
add esp, 4
lea edi, [ecx - 0xe]
test edx, edx
jne 0x40c79c
cmp dword [esi + 0x28], edi
jne 0x40c79c
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40c79c
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov dword [esp + 0x18], edi
mov edi, ebp
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov eax, 4
mov dword [edx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov ecx, dword [esi + 0x20]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
xor edi, edi
mov ecx, 1
fild dword [esp + 0x14]
mov dword [ebp + 0x58], ecx
mov dword [ebp + 0x5c], edi
mov eax, dword [esi + 0x2c]
cdq
fstp qword [esp + 0x28]
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x54], edx
mov dword [ebp + 0x48], 0xfffffffc
mov dword [ebp + 0x4c], 0xffffffff
mov eax, dword [esi + 0x2c]
cdq
neg eax
adc edx, edi
neg edx
shld edx, eax, 2
add eax, eax
add eax, eax
mov dword [ebp + 0x44], edx
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], edi
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b4588]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
fldcw word [esp + 0x10]
mov edx, dword [ebp + 0x34]
push edi
lea ecx, [esp + 0x20]
push ecx
add edx, 0x14c
push edx
call fcn.00459240
fld1
mov eax, dword [ebp + 0x34]
fstp qword [eax + 0x128]
add esp, 0xc
cmp dword [esi + 0x30], 2
jne 0x40e54b
mov eax, dword [esp + 0x68]
imul eax, dword [esp + 0x6c]
mov ecx, dword [ebp + 0x34]
push eax
add ecx, 0x10
push ecx
call fcn.00458440
mov eax, dword [ebp + 0x34]
add eax, 0x10
push edi
push eax
push eax
call fcn.00459240
mov eax, dword [ebp + 0x34]
lea ecx, [eax + 0x14c]
add esp, 0x14
push ecx
push ecx
add eax, 4
push eax
call fcn.00458530
mov edx, dword [esi + 0x1c]
add esp, 0xc
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.00456980
fld qword [esp + 0x30]
fnstcw word [esp + 0x18]
lea edx, [esp + 0x40]
movzx eax, word [esp + 0x18]
fadd st(0), st(0)
or eax, 0xc00
mov dword [esp + 0x1c], eax
mov eax, edx
fldcw word [esp + 0x1c]
fistp qword [esp + 0xa8]
mov ecx, dword [esp + 0xa8]
push ecx
push edx
fldcw word [esp + 0x20]
push eax
call fcn.00459240
mov eax, dword [ebp + 0x34]
add esp, 0x14
lea ecx, [esp + 0x38]
add eax, 4
push ecx
push eax
push eax
call fcn.00459390
lea edx, [esp + 0x44]
add esp, 0xc
push edx
mov eax, edx
push eax
call fcn.00457ad0
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0xc8]
push edx
call fcn.00456880
lea eax, [esp + 0x48]
push esi
push eax
mov ecx, eax
push ecx
call fcn.004598d0
mov eax, dword [ebp + 0x34]
add esp, 0x1c
lea edx, [esp + 0x38]
push edx
add eax, 0x14c
push eax
mov ecx, edx
push ecx
call fcn.00458530
add esp, 0xc
push esi
lea edx, [esp + 0x3c]
push edx
mov eax, edx
push eax
call fcn.00458470
mov eax, dword [ebp + 0x34]
add esp, 0xc
add eax, 0x14c
push esi
push eax
push eax
call fcn.004598d0
mov eax, dword [ebp + 0x34]
add esp, 0xc
lea ecx, [esp + 0xbc]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00458530
mov eax, dword [ebp + 0x34]
add esp, 0xc
add eax, 0x14c
push esi
push eax
push eax
call fcn.00458470
mov eax, dword [ebp + 0x34]
add esp, 0xc
lea edx, [esp + 0x38]
add eax, 0x14c
push edx
push eax
push eax
call fcn.00459390
mov eax, dword [ebp + 0x34]
add esp, 0xc
add eax, 0x14c
push esi
push eax
push eax
call fcn.00458470
mov esi, dword [ebp + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40c78f
push esi
push esi
call fcn.00456880
add esp, 8
mov eax, dword [esi + 4]
neg eax
mov dword [esi + 4], eax
jmp 0x40e5e8
mov eax, ebp
cdq
mov ecx, 0x15
idiv ecx
test edx, edx
jne 0x40c8e9
cmp dword [esi + 0x28], edi
jne 0x40c8e9
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40c8e9
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov eax, 6
mov dword [edx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov eax, 0x30c30c31
imul dword [esi + 0x20]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
xor ecx, ecx
mov dword [ebp + 0x68], 1
mov dword [ebp + 0x6c], ecx
fild dword [esp + 0x14]
mov eax, dword [esi + 0x2c]
cdq
fstp qword [esp + 0x28]
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], edx
mov dword [ebp + 0x58], 0xfffffffa
mov dword [ebp + 0x5c], 0xffffffff
mov eax, dword [esi + 0x2c]
cdq
mov edi, eax
mov ebx, edx
shld ebx, edi, 2
add edi, edi
add edi, edi
sub edi, eax
sbb ebx, edx
neg edi
adc ebx, ecx
neg ebx
shld ebx, edi, 1
add edi, edi
mov dword [ebp + 0x50], edi
mov dword [ebp + 0x54], ebx
mov dword [ebp + 0x48], 8
mov dword [ebp + 0x4c], ecx
mov eax, dword [esi + 0x2c]
cdq
shld edx, eax, 3
add eax, eax
add eax, eax
add eax, eax
mov dword [ebp + 0x44], edx
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x38], 1
mov dword [ebp + 0x3c], ecx
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b4560]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
fldcw word [esp + 0x10]
jmp 0x40c5ea
mov eax, ebp
cdq
mov ecx, 6
idiv ecx
mov ecx, edx
test ecx, ecx
jne 0x40ca9c
cmp dword [esi + 0x28], edi
jne 0x40ca9c
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40ca9c
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov eax, 4
mov dword [edx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov eax, 0x2aaaaaab
imul dword [esi + 0x20]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
or ecx, 0xffffffff
mov edx, 1
fild dword [esp + 0x14]
xor eax, eax
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x38], edx
mov dword [ebp + 0x5c], eax
fstp qword [esp + 0x28]
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], ecx
mov dword [ebp + 0x3c], eax
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b43f8]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
fldcw word [esp + 0x10]
mov edx, dword [ebp + 0x34]
push edi
lea ecx, [esp + 0x20]
push ecx
add edx, 0x14c
push edx
call fcn.00459240
fld1
mov eax, dword [ebp + 0x34]
fstp qword [eax + 0x128]
mov eax, dword [ebp + 0x34]
add esp, 0xc
cmp dword [esi + 0x30], 2
jne 0x40e5c7
mov edx, dword [esp + 0x68]
push edx
add eax, 0x10
push eax
call fcn.00458440
mov eax, dword [ebp + 0x34]
add eax, 0x10
push edi
push eax
push eax
call fcn.00459240
mov eax, dword [ebp + 0x34]
lea ecx, [eax + 0x14c]
add esp, 0x14
push ecx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebp + 0x34]
push esi
add edx, 0x10
push edx
lea eax, [esp + 0x48]
push eax
call fcn.004598d0
mov eax, dword [ebp + 0x34]
add esp, 0x14
lea ecx, [esp + 0x38]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00458530
mov eax, dword [ebp + 0x34]
add esp, 0xc
add eax, 0x14c
push esi
push eax
push eax
call fcn.00458470
mov esi, dword [ebp + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40ca8f
push esi
push esi
call fcn.00456880
add esp, 8
mov edx, dword [esi + 4]
neg edx
mov dword [esi + 4], edx
jmp 0x40e5e8
cmp ecx, 3
jne 0x40cbd1
cmp dword [esi + 0x28], edi
jne 0x40cbd1
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40cbd1
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov ecx, dword [ebp + 0x34]
mov eax, 4
mov dword [ecx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov ecx, dword [esi + 0x20]
sub ecx, 3
mov eax, 0x2aaaaaab
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x18]
imul eax, eax
fild dword [esp + 0x14]
fstp qword [esp + 0x28]
cdq
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x5c], edx
mov eax, dword [esi + 0x18]
imul eax, dword [esi + 0x2c]
neg eax
cdq
mov dword [ebp + 0x4c], edx
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x38], 1
mov dword [ebp + 0x3c], 0
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
fld qword [0x5b49b8]
add esp, 0xc
call fcn.004bd930
mov ecx, dword [ebp + 0x34]
lea edx, [esp + 0x1c]
fstp qword [ecx + 0x128]
push edx
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fmul qword [0x5b43f8]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
or eax, 0xc00
fxch st(1)
mov dword [esp + 0x14], eax
lea eax, [esp + 0x1c]
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
mov ecx, dword [ebp + 0x34]
push edi
fldcw word [esp + 0x14]
push eax
add ecx, 0x14c
push ecx
call fcn.00459240
jmp 0x40c9fa
mov eax, ebp
cdq
mov ecx, 5
idiv ecx
test edx, edx
jne 0x40cce4
cmp dword [esi + 0x28], edi
jne 0x40cce4
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40cce4
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov eax, 4
mov dword [edx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov eax, 0x66666667
imul dword [esi + 0x20]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
xor edi, edi
mov dword [esp + 0x14], eax
mov ecx, 1
mov dword [ebp + 0x58], ecx
fild dword [esp + 0x14]
mov dword [ebp + 0x5c], edi
mov eax, dword [esi + 0x2c]
cdq
fstp qword [esp + 0x28]
neg eax
adc edx, edi
neg edx
mov dword [ebp + 0x54], edx
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], edi
mov eax, dword [esi + 0x2c]
cdq
neg eax
adc edx, edi
neg edx
mov dword [ebp + 0x44], edx
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], edi
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b43f8]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
fldcw word [esp + 0x10]
jmp 0x40c9da
mov eax, ebp
cdq
mov ecx, 7
idiv ecx
test edx, edx
jne 0x40ce12
cmp dword [esi + 0x28], edi
jne 0x40ce12
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40ce12
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov eax, 6
mov dword [edx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov ecx, dword [esi + 0x20]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
xor edi, edi
mov dword [esp + 0x14], eax
mov ecx, 1
mov dword [ebp + 0x68], ecx
mov dword [ebp + 0x6c], edi
fild dword [esp + 0x14]
mov eax, dword [esi + 0x2c]
cdq
fstp qword [esp + 0x28]
neg eax
adc edx, edi
neg edx
mov dword [ebp + 0x64], edx
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x58], ecx
mov dword [ebp + 0x5c], edi
mov eax, dword [esi + 0x2c]
cdq
neg eax
adc edx, edi
neg edx
mov dword [ebp + 0x54], edx
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], edi
mov eax, dword [esi + 0x2c]
cdq
neg eax
adc edx, edi
neg edx
mov dword [ebp + 0x44], edx
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], edi
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b44b8]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
fldcw word [esp + 0x10]
jmp 0x40c9da
mov eax, ebp
cdq
mov ecx, 0xb
idiv ecx
test edx, edx
jne 0x40cf48
cmp dword [esi + 0x28], edi
jne 0x40cf48
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40cf48
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov eax, 5
mov dword [edx + 0x94], eax
mov dword [ebx + 0xef4], eax
mov eax, 0x2e8ba2e9
imul dword [esi + 0x20]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
xor ecx, ecx
mov dword [ebp + 0x60], 1
mov dword [ebp + 0x64], ecx
fild dword [esp + 0x14]
mov eax, dword [esi + 0x2c]
cdq
fstp qword [esp + 0x28]
neg eax
adc edx, ecx
neg edx
mov dword [ebp + 0x5c], edx
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x50], 0xfffffffc
mov dword [ebp + 0x54], 0xffffffff
mov eax, dword [esi + 0x2c]
cdq
mov ebx, edx
shld edx, eax, 1
mov edi, eax
add eax, eax
add edi, eax
adc ebx, edx
mov dword [ebp + 0x48], edi
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x40], 3
mov dword [ebp + 0x44], ecx
mov eax, dword [esi + 0x2c]
cdq
neg eax
adc edx, ecx
neg edx
mov dword [ebp + 0x3c], edx
mov dword [ebp + 0x38], eax
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b4458]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
mov edi, dword [esp + 0x58]
fldcw word [esp + 0x10]
jmp 0x40c5ea
mov eax, ebp
cdq
mov ecx, 0xd
idiv ecx
test edx, edx
jne 0x40d08b
cmp dword [esi + 0x28], edi
jne 0x40d08b
mov eax, dword [esi + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
jne 0x40d08b
push 0xb0
call fcn.004b7263
add esp, 4
mov ebp, eax
call fcn.0040a620
mov edi, ebp
mov dword [esp + 0x18], 1
call fcn.0040a710
mov edx, dword [ebp + 0x34]
mov edi, 6
mov dword [edx + 0x94], edi
mov dword [ebx + 0xef4], edi
mov eax, 0x4ec4ec4f
imul dword [esi + 0x20]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dword [ebp + 0x6c], ebx
mov dword [ebp + 0x68], 1
mov eax, dword [esi + 0x2c]
fild dword [esp + 0x14]
cdq
neg eax
fstp qword [esp + 0x28]
adc edx, ebx
neg edx
mov dword [ebp + 0x60], eax
or ecx, 0xffffffff
mov dword [ebp + 0x64], edx
mov dword [ebp + 0x58], 0xfffffffb
mov dword [ebp + 0x5c], ecx
mov eax, dword [esi + 0x2c]
cdq
shld edx, eax, 2
add eax, eax
mov dword [ebp + 0x48], edi
add eax, eax
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x54], edx
mov dword [ebp + 0x50], eax
mov eax, dword [esi + 0x2c]
cdq
mov ebx, edx
mov edi, eax
shld ebx, edi, 2
add edi, edi
add edi, edi
sub edi, eax
sbb ebx, edx
neg edi
adc ebx, 0
neg ebx
mov dword [ebp + 0x40], edi
mov dword [ebp + 0x44], ebx
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], ecx
mov ecx, dword [esi + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00456980
lea eax, [esp + 0x24]
push eax
call fcn.00459540
add esp, 0xc
call fcn.0050dcf0
fmul qword [0x5b4560]
fld qword [esp + 0x28]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(1), st(0)
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fstp qword [ebp + 0x80]
fldcw word [esp + 0x14]
fistp qword [esp + 0x58]
fldcw word [esp + 0x10]
mov edi, dword [esp + 0x58]
jmp 0x40c5ea
mov esi, dword [esp + 0x6c]
lea ecx, [esp + 0x1c]
push esi
push ecx
call fcn.00456980
lea edx, [esp + 0x24]
push 0xa
push edx
call fcn.00456e30
add esp, 0x10
test eax, eax
jne 0x40d0d2
lea eax, [esp + 0xc8]
push eax
mov eax, esi
call fcn.00410180
add esp, 4
mov dword [esp + 0x8c], eax
cmp eax, edi
jle 0x40d0d2
lea edi, [eax + eax*2 + 3]
add edi, edi
jmp 0x40d0d7
mov edi, 6
mov ecx, edi
imul ecx, ecx, 0xb0
push ecx
call fcn.004b7263
add esp, 4
mov ebp, eax
test edi, edi
jle 0x40d100
mov esi, ebp
mov eax, esi
call fcn.0040a620
add esi, 0xb0
dec edi
jne 0x40d0f0
cmp dword [0x5d5f9c], 0
jle 0x40d116
push str.gen:__ngen:_considering_the_following_polynomials:_ngen:__n_n
call fcn.004b7f6d
add esp, 4
push str.gen:_considering_the_following_polynomials:_n
lea edx, [ebx + 0x1720]
push 0x51a9e0
push edx
call fcn.004439f0
mov eax, dword [esp + 0x78]
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
push ecx
mov dword [esp + 0x20], 0
call fcn.00458440
mov eax, 0x66666667
imul dword [esp + 0x6c]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea ecx, [esp + 0x28]
push ecx
mov edx, ecx
push edx
call fcn.00459240
lea eax, [esp + 0x30]
add esp, 0x14
push eax
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fmul qword [0x5b4450]
fld qword [0x5b45d0]
mov ecx, 4
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x40d1c1
mov eax, ecx
fstp st(0)
mov dword [ebx + 0xef4], ecx
mov dword [ebx + 0xef8], 5
lea ecx, [eax + 1]
jmp 0x40d21a
fld qword [0x5b49a8]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x40d1eb
mov dword [ebx + 0xef8], ecx
fstp st(0)
mov eax, ecx
mov dword [ebx + 0xef4], 5
mov ecx, 5
jmp 0x40d21a
fcomp qword [0x5b47a8]
mov ecx, 6
fnstsw ax
test ah, 5
lea eax, [ecx - 1]
jp 0x40d20e
mov dword [ebx + 0xef4], eax
mov dword [ebx + 0xef8], ecx
jmp 0x40d21a
mov dword [ebx + 0xef4], ecx
mov dword [ebx + 0xef8], eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x10], eax
cmp eax, ecx
jg 0x40e5f4
lea ecx, [ecx]
mov eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x10]
mov dword [esp + 0x94], edx
mov dword [esp + 0x80], eax
test edx, edx
jne 0x40d50b
mov ecx, dword [esp + 0x6c]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00458440
mov eax, dword [esp + 0x88]
push eax
lea ecx, [esp + 0x28]
push ecx
mov edx, ecx
push edx
call fcn.00459240
lea eax, [esp + 0x30]
add esp, 0x14
push eax
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fimul dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x260]
imul ebx, ebx, 0xb0
fstp qword [esp + 0x50]
add ebx, ebp
mov edi, ebx
call fcn.0040a710
mov eax, dword [esp + 0x18]
fld qword [esp + 0x50]
mov edx, dword [ebx + 0x34]
imul eax, eax, 0x16
fstp qword [ebx + 0x80]
fld1
fstp qword [edx + 0x128]
mov ecx, dword [esp + 0x10]
add eax, ecx
lea edi, [ebp + eax*8 + 0x38]
mov eax, dword [esi + 0x28]
cdq
mov dword [edi], eax
mov dword [edi + 4], edx
mov eax, dword [esi + 0x2c]
cdq
mov dword [ebx + 0x3c], edx
mov edx, dword [ebx + 0x34]
mov dword [ebx + 0x38], eax
mov dword [edx + 0x94], ecx
mov ecx, dword [ebx + 0x34]
add ecx, 0x10
cmp dword [esi + 0x30], 2
jne 0x40d3e2
mov eax, dword [esp + 0x68]
push eax
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
mov edx, dword [esp + 0x88]
add eax, 0x10
push edx
push eax
push eax
call fcn.00459240
mov ecx, dword [ebx + 0x34]
add esp, 0x14
lea eax, [esp + 0x1c]
push eax
add ecx, 4
push ecx
call fcn.00456880
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 0x14c
push eax
call fcn.00456880
mov ecx, dword [ebx + 0x34]
push ebx
add ecx, 0x10
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.004598d0
mov eax, dword [ebx + 0x34]
add esp, 0x1c
lea ecx, [esp + 0x38]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00458530
mov eax, dword [ebx + 0x34]
add esp, 0xc
add eax, 0x14c
push ebx
push eax
push eax
call fcn.00458470
mov eax, dword [ebx + 0x34]
lea edx, [eax + 0x10]
add esp, 0xc
push edx
add eax, 4
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00458a00
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea ecx, [esp + 0x38]
add eax, 4
push ecx
push eax
push eax
call fcn.00457360
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea edx, [esp + 0x38]
add eax, 0x10
push edx
push eax
push eax
call fcn.00457360
mov esi, dword [ebx + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40d3d8
push esi
push esi
call fcn.00456880
add esp, 8
mov eax, dword [esi + 4]
neg eax
mov dword [esi + 4], eax
jmp 0x40d412
push 0xffffffffffffffff
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebx + 0x34]
lea ecx, [esp + 0x2c]
push ecx
add edx, 0x14c
push edx
call fcn.00456880
add esp, 0x18
mov eax, dword [edi + 4]
mov ecx, dword [edi]
test eax, eax
jg 0x40d428
jl 0x40d421
test ecx, ecx
jae 0x40d428
neg ecx
adc eax, 0
neg eax
mov esi, dword [ebx + 0x38]
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 0x3c]
mov dword [esp + 0x30], ecx
test eax, eax
jg 0x40d447
jl 0x40d440
test esi, esi
jae 0x40d447
neg esi
adc eax, 0
neg eax
mov dword [esp + 0x2c], eax
mov eax, ecx
mov ecx, esi
test esi, esi
je 0x40d45f
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40d453
push 0
push eax
mov eax, dword [edi + 4]
push eax
mov eax, dword [edi]
push eax
call fcn.004c5de0
mov dword [edi], eax
mov eax, dword [esp + 0x30]
mov dword [edi + 4], edx
mov ecx, esi
test esi, esi
je 0x40d48c
lea ecx, [ecx]
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40d480
mov ecx, dword [ebx + 0x38]
push 0
push eax
mov eax, dword [ebx + 0x3c]
push eax
push ecx
call fcn.004c5de0
mov esi, ebx
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
call fcn.0040a890
call fcn.0040adc0
cmp dword [ebx + 0xa4], 0
je 0x40d4d6
cmp dword [0x5d5f9c], 0
jle 0x40d4cd
call fcn.004b7416
lea edi, [eax + 0x20]
call fcn.0040ac00
inc dword [esp + 0x18]
jmp 0x40e530
push ebx
call fcn.00456900
lea edx, [ebx + 0xc]
add esp, 4
push edx
call fcn.00456900
mov eax, dword [ebx + 0x34]
add esp, 4
call fcn.0040a580
mov eax, dword [ebx + 0x34]
push eax
call fcn.004b7229
add esp, 4
mov eax, ebx
call fcn.0040a620
jmp 0x40e530
mov ecx, dword [esp + 0x10]
mov eax, ecx
sub eax, dword [esp + 0x94]
mov dword [esp + 0x14], eax
mov dword [esp + 0x48], eax
add eax, dword [esp + 0x64]
cdq
idiv ecx
lea ecx, [esp + 0x1c]
mov esi, eax
mov eax, dword [esp + 0x6c]
push eax
push ecx
mov dword [esp + 0x54], esi
call fcn.00458440
lea edx, [esp + 0x24]
push esi
push edx
mov eax, edx
push eax
call fcn.00459240
fild dword [esp + 0x24]
lea ecx, [esp + 0x30]
add esp, 0x14
push ecx
fstp qword [esp + 0xac]
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fmul qword [esp + 0xa8]
fstp qword [esp + 0x50]
fild dword [esp + 0x68]
fst qword [esp + 0xb0]
fild dword [esp + 0x48]
fst qword [esp + 0x70]
call fcn.004bd930
call fcn.004bd196
mov esi, dword [esp + 0x260]
mov ecx, eax
mov eax, dword [esi + 0x28]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
fild dword [esp + 0x6c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
fst qword [esp + 0x98]
fld qword [esp + 0x70]
call fcn.004bd930
call fcn.004bd196
mov ecx, eax
mov eax, dword [esi + 0x2c]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
mov ebx, dword [esp + 0x18]
imul ebx, ebx, 0xb0
add ebx, ebp
mov edi, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
call fcn.0040a710
mov esi, dword [esp + 0x28]
fld qword [esp + 0x50]
mov eax, esi
fstp qword [ebx + 0x80]
cdq
fld1
xor eax, edx
fdiv qword [esp + 0xa8]
sub eax, edx
mov dword [esp + 0x80], eax
fst qword [esp + 0x58]
fild dword [esp + 0x80]
fild qword [esp + 0x30]
fdivp st(1)
fxch st(1)
call fcn.004bd930
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x34]
imul ecx, ecx, 0x16
fstp qword [eax + 0x128]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
add ecx, eax
lea edi, [ebp + ecx*8 + 0x38]
mov ecx, dword [esp + 0x34]
mov dword [edi], edx
mov edx, dword [esp + 0x2c]
mov dword [edi + 4], ecx
mov ecx, dword [ebx + 0x34]
mov dword [ebx + 0x3c], edx
mov edx, dword [esp + 0x260]
mov dword [ebx + 0x38], esi
mov dword [ecx + 0x94], eax
mov ecx, dword [ebx + 0x34]
add ecx, 0x10
cmp dword [edx + 0x30], 2
jne 0x40d768
mov eax, dword [esp + 0x68]
push eax
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
mov edx, dword [esp + 0x54]
add eax, 0x10
push edx
push eax
push eax
call fcn.00459240
mov ecx, dword [ebx + 0x34]
add esp, 0x14
lea eax, [esp + 0x1c]
push eax
add ecx, 4
push ecx
call fcn.00456880
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 0x14c
push eax
call fcn.00456880
mov ecx, dword [ebx + 0x34]
push ebx
add ecx, 0x10
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.004598d0
mov eax, dword [ebx + 0x34]
add esp, 0x1c
lea ecx, [esp + 0x38]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00458530
mov eax, dword [ebx + 0x34]
add esp, 0xc
add eax, 0x14c
push ebx
push eax
push eax
call fcn.00458470
mov eax, dword [ebx + 0x34]
lea edx, [eax + 0x10]
add esp, 0xc
push edx
add eax, 4
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00458a00
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea ecx, [esp + 0x38]
add eax, 4
push ecx
push eax
push eax
call fcn.00457360
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea edx, [esp + 0x38]
add eax, 0x10
push edx
push eax
push eax
call fcn.00457360
mov esi, dword [ebx + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40d75e
push esi
push esi
call fcn.00456880
add esp, 8
mov eax, dword [esi + 4]
neg eax
mov dword [esi + 4], eax
jmp 0x40d798
push 0xffffffffffffffff
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebx + 0x34]
lea ecx, [esp + 0x2c]
push ecx
add edx, 0x14c
push edx
call fcn.00456880
add esp, 0x18
mov ecx, dword [edi + 4]
mov eax, dword [edi]
test ecx, ecx
jg 0x40d7b4
jl 0x40d7a7
test eax, eax
jae 0x40d7b4
neg eax
adc ecx, 0
mov dword [esp + 0x30], eax
neg ecx
jmp 0x40d7b8
mov dword [esp + 0x30], eax
mov esi, dword [ebx + 0x38]
mov dword [esp + 0x34], ecx
mov ecx, dword [ebx + 0x3c]
test ecx, ecx
jg 0x40d7d3
jl 0x40d7cc
test esi, esi
jae 0x40d7d3
neg esi
adc ecx, 0
neg ecx
mov dword [esp + 0x2c], ecx
mov ecx, esi
test esi, esi
je 0x40d7ec
lea ecx, [ecx]
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40d7e0
push 0
push eax
mov eax, dword [edi + 4]
push eax
mov eax, dword [edi]
push eax
call fcn.004c5de0
mov dword [edi], eax
mov eax, dword [esp + 0x30]
mov dword [edi + 4], edx
mov ecx, esi
test esi, esi
je 0x40d81c
lea ebx, [ebx]
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40d810
mov ecx, dword [ebx + 0x38]
push 0
push eax
mov eax, dword [ebx + 0x3c]
push eax
push ecx
call fcn.004c5de0
mov esi, ebx
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
call fcn.0040a890
call fcn.0040adc0
cmp dword [ebx + 0xa4], 0
je 0x40d863
cmp dword [0x5d5f9c], 0
jle 0x40d85d
call fcn.004b7416
lea edi, [eax + 0x20]
call fcn.0040ac00
inc dword [esp + 0x18]
jmp 0x40d893
push ebx
call fcn.00456900
lea edx, [ebx + 0xc]
add esp, 4
push edx
call fcn.00456900
mov eax, dword [ebx + 0x34]
add esp, 4
call fcn.0040a580
mov eax, dword [ebx + 0x34]
push eax
call fcn.004b7229
add esp, 4
mov eax, ebx
call fcn.0040a620
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x64]
sub eax, ecx
cdq
idiv dword [esp + 0x10]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x6c]
push ecx
lea edx, [esp + 0x20]
push edx
mov esi, eax
mov dword [esp + 0x54], esi
call fcn.00458440
lea eax, [esp + 0x24]
push esi
push eax
mov ecx, eax
push ecx
call fcn.00459240
fild dword [esp + 0x5c]
add esp, 0x14
fst qword [esp + 0x70]
fld qword [esp + 0x98]
fxch st(1)
call fcn.004bd930
fstp qword [esp + 0x80]
lea edx, [esp + 0x1c]
push edx
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fmul qword [esp + 0xa8]
fstp qword [esp + 0x50]
fld qword [esp + 0x80]
call fcn.0050dcf0
fadd qword [esp + 0x50]
mov esi, dword [esp + 0x260]
mov eax, dword [esi + 0x28]
cdq
fstp qword [esp + 0x50]
fld qword [esp + 0x80]
mov edi, eax
mov ebx, edx
call fcn.004bd196
push edx
push eax
push ebx
push edi
call fcn.004bdf50
fld qword [esp + 0xb0]
fld qword [esp + 0x70]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
call fcn.004bd930
call fcn.004bd196
mov ecx, eax
mov eax, dword [esi + 0x2c]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
mov ebx, dword [esp + 0x18]
imul ebx, ebx, 0xb0
add ebx, ebp
mov edi, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
call fcn.0040a710
fild qword [esp + 0x30]
fst qword [esp + 0x70]
call fcn.0050dcf0
mov eax, dword [esp + 0x28]
fadd qword [esp + 0x50]
cdq
xor eax, edx
sub eax, edx
fstp qword [ebx + 0x80]
mov dword [esp + 0x80], eax
fild dword [esp + 0x80]
fdiv qword [esp + 0x70]
fld qword [esp + 0x58]
call fcn.004bd930
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x34]
imul ecx, ecx, 0x16
fstp qword [eax + 0x128]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
add ecx, eax
lea edi, [ebp + ecx*8 + 0x38]
mov ecx, dword [esp + 0x34]
mov dword [edi], edx
mov edx, dword [esp + 0x28]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x2c]
mov dword [ebx + 0x38], edx
mov edx, dword [ebx + 0x34]
mov dword [ebx + 0x3c], ecx
mov dword [edx + 0x94], eax
mov ecx, dword [ebx + 0x34]
add ecx, 0x10
cmp dword [esi + 0x30], 2
jne 0x40daf6
mov eax, dword [esp + 0x68]
push eax
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
mov edx, dword [esp + 0x54]
add eax, 0x10
push edx
push eax
push eax
call fcn.00459240
mov ecx, dword [ebx + 0x34]
add esp, 0x14
lea eax, [esp + 0x1c]
push eax
add ecx, 4
push ecx
call fcn.00456880
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 0x14c
push eax
call fcn.00456880
mov ecx, dword [ebx + 0x34]
push ebx
add ecx, 0x10
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.004598d0
mov eax, dword [ebx + 0x34]
add esp, 0x1c
lea ecx, [esp + 0x38]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00458530
mov eax, dword [ebx + 0x34]
add esp, 0xc
add eax, 0x14c
push ebx
push eax
push eax
call fcn.00458470
mov eax, dword [ebx + 0x34]
lea edx, [eax + 0x10]
add esp, 0xc
push edx
add eax, 4
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00458a00
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea ecx, [esp + 0x38]
add eax, 4
push ecx
push eax
push eax
call fcn.00457360
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea edx, [esp + 0x38]
add eax, 0x10
push edx
push eax
push eax
call fcn.00457360
mov esi, dword [ebx + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40daec
push esi
push esi
call fcn.00456880
add esp, 8
mov eax, dword [esi + 4]
neg eax
mov dword [esi + 4], eax
jmp 0x40db26
push 0xffffffffffffffff
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebx + 0x34]
lea ecx, [esp + 0x2c]
push ecx
add edx, 0x14c
push edx
call fcn.00456880
add esp, 0x18
mov ecx, dword [edi + 4]
mov eax, dword [edi]
test ecx, ecx
jg 0x40db42
jl 0x40db35
test eax, eax
jae 0x40db42
neg eax
adc ecx, 0
mov dword [esp + 0x30], eax
neg ecx
jmp 0x40db46
mov dword [esp + 0x30], eax
mov esi, dword [ebx + 0x38]
mov dword [esp + 0x34], ecx
mov ecx, dword [ebx + 0x3c]
test ecx, ecx
jg 0x40db61
jl 0x40db5a
test esi, esi
jae 0x40db61
neg esi
adc ecx, 0
neg ecx
mov dword [esp + 0x2c], ecx
mov ecx, esi
test esi, esi
je 0x40db7c
jmp 0x40db70
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40db70
push 0
push eax
mov eax, dword [edi + 4]
push eax
mov eax, dword [edi]
push eax
call fcn.004c5de0
mov dword [edi], eax
mov eax, dword [esp + 0x30]
mov dword [edi + 4], edx
mov ecx, esi
test esi, esi
je 0x40dbac
lea ebx, [ebx]
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40dba0
mov ecx, dword [ebx + 0x38]
push 0
push eax
mov eax, dword [ebx + 0x3c]
push eax
push ecx
call fcn.004c5de0
mov esi, ebx
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
call fcn.0040a890
call fcn.0040adc0
cmp dword [ebx + 0xa4], 0
je 0x40dbf3
cmp dword [0x5d5f9c], 0
jle 0x40dbed
call fcn.004b7416
lea edi, [eax + 0x20]
call fcn.0040ac00
inc dword [esp + 0x18]
jmp 0x40dc23
push ebx
call fcn.00456900
lea edx, [ebx + 0xc]
add esp, 4
push edx
call fcn.00456900
mov eax, dword [ebx + 0x34]
add esp, 4
call fcn.0040a580
mov eax, dword [ebx + 0x34]
push eax
call fcn.004b7229
add esp, 4
mov eax, ebx
call fcn.0040a620
cmp dword [esp + 0x8c], 1
jle 0x40e530
cmp dword [esp + 0x8c], 0
mov dword [esp + 0x7c], 0
jle 0x40e530
mov eax, dword [esp + 0x18]
mov ebx, eax
imul eax, eax, 0x16
imul ebx, ebx, 0xb0
add ebx, ebp
add eax, dword [esp + 0x10]
lea edx, [ebx + 0xc]
lea eax, [ebp + eax*8 + 0x38]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x98], edx
test eax, eax
jle 0x40dc8a
mov ecx, dword [esp + eax*4 + 0xc8]
cmp ecx, dword [esp + eax*4 + 0xc4]
je 0x40e51e
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + eax*4 + 0xc8]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x80], ecx
fild dword [esp + 0x80]
mov dword [esp + 0x88], edx
fst qword [esp + 0xa0]
fild dword [esp + 0x88]
fst qword [esp + 0x70]
call fcn.004bd930
call fcn.004bd196
mov esi, dword [esp + 0x260]
mov ecx, eax
mov eax, dword [esi + 0x2c]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
fld qword [esp + 0xb0]
mov dword [esp + 0x28], eax
fld qword [esp + 0x70]
mov dword [esp + 0x2c], edx
call fcn.004bd930
call fcn.004bd196
mov ecx, eax
mov eax, dword [esi + 0x28]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x30], eax
mov esi, 1
mov dword [esp + 0x4c], edx
xor edi, edi
lea ebx, [ebx]
cmp edi, dword [esp + 0x7c]
je 0x40dd71
mov eax, dword [esp + edi*4 + 0xc8]
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
fild dword [esp + 0x4c]
call fcn.004bd930
call fcn.004bd196
mov ecx, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x34]
push ecx
push edx
push eax
call fcn.004bdf50
imul esi, dword [esp + 0x48]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
inc edi
cmp edi, dword [esp + 0x8c]
jl 0x40dd30
mov edx, dword [esp + 0x80]
push edx
lea eax, [esp + 0x20]
push eax
call fcn.00458440
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x90]
mov edi, dword [esp + 0x18]
lea eax, [eax + edx]
cdq
idiv edi
push eax
mov dword [esp + 0x54], eax
lea eax, [esp + 0x28]
push eax
mov ecx, eax
push ecx
call fcn.00459240
add esp, 0x14
lea edx, [esp + 0x38]
push esi
push edx
call fcn.00458440
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x54]
cdq
idiv edi
push eax
lea eax, [esp + 0x44]
push eax
mov ecx, eax
push ecx
call fcn.00459240
add esp, 0x14
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x20]
push eax
mov ecx, eax
push ecx
call fcn.00458530
fild qword [esp + 0x3c]
lea edx, [esp + 0x28]
add esp, 0xc
push edx
fstp qword [esp + 0x74]
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fmul qword [esp + 0xa8]
fstp qword [esp + 0x50]
fld qword [esp + 0x70]
call fcn.0050dcf0
fadd qword [esp + 0x50]
mov esi, dword [esp + 0x260]
mov edi, ebx
fstp qword [esp + 0x50]
call fcn.0040a710
mov esi, dword [esp + 0x28]
fld qword [esp + 0x50]
mov eax, esi
fstp qword [ebx + 0x80]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fdiv qword [esp + 0x70]
fld qword [esp + 0x58]
call fcn.004bd930
mov eax, dword [ebx + 0x34]
mov ecx, dword [esp + 0x30]
fstp qword [eax + 0x128]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x34]
mov dword [ebx + 0x38], esi
mov dword [ebx + 0x3c], eax
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x260]
mov dword [ecx + 0x94], edx
cmp dword [eax + 0x30], 2
jne 0x40df8d
mov ecx, dword [esp + 0x68]
mov edx, dword [ebx + 0x34]
push ecx
add edx, 0x10
push edx
call fcn.00458440
mov eax, dword [ebx + 0x34]
mov ecx, dword [esp + 0x50]
add eax, 0x10
push ecx
push eax
push eax
call fcn.00459240
mov eax, dword [ebx + 0x34]
add esp, 0x14
lea edx, [esp + 0x1c]
push edx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebx + 0x34]
lea ecx, [esp + 0x24]
push ecx
add edx, 0x14c
push edx
call fcn.00456880
mov eax, dword [ebx + 0x34]
push ebx
add eax, 0x10
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.004598d0
mov eax, dword [ebx + 0x34]
add esp, 0x1c
lea edx, [esp + 0x38]
add eax, 0x14c
push edx
push eax
push eax
call fcn.00458530
mov eax, dword [ebx + 0x34]
add esp, 0xc
add eax, 0x14c
push ebx
push eax
push eax
call fcn.00458470
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea ecx, [eax + 0x10]
push ecx
add eax, 4
push eax
lea edx, [esp + 0x40]
push edx
call fcn.00458a00
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea ecx, [esp + 0x38]
add eax, 4
push ecx
push eax
push eax
call fcn.00457360
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea edx, [esp + 0x38]
add eax, 0x10
push edx
push eax
push eax
call fcn.00457360
mov esi, dword [ebx + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40df83
push esi
push esi
call fcn.00456880
add esp, 8
mov eax, dword [esi + 4]
neg eax
mov dword [esi + 4], eax
jmp 0x40dfc3
mov ecx, dword [ebx + 0x34]
add ecx, 0x10
push 0xffffffffffffffff
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebx + 0x34]
lea ecx, [esp + 0x2c]
push ecx
add edx, 0x14c
push edx
call fcn.00456880
add esp, 0x18
mov eax, dword [esp + 0x44]
mov edi, dword [eax]
mov eax, dword [eax + 4]
test eax, eax
jg 0x40dfdd
jl 0x40dfd6
test edi, edi
jae 0x40dfdd
neg edi
adc eax, 0
neg eax
mov esi, dword [ebx + 0x38]
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 0x3c]
test eax, eax
jg 0x40dff8
jl 0x40dff1
test esi, esi
jae 0x40dff8
neg esi
adc eax, 0
neg eax
mov dword [esp + 0x2c], eax
mov eax, edi
mov ecx, esi
test esi, esi
je 0x40e010
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40e004
push 0
push eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
push ecx
push eax
call fcn.004c5de0
mov ecx, dword [esp + 0x44]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, edi
mov ecx, esi
test esi, esi
je 0x40e040
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40e034
mov ecx, dword [ebx + 0x38]
push 0
push eax
mov eax, dword [ebx + 0x3c]
push eax
push ecx
call fcn.004c5de0
mov esi, ebx
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
call fcn.0040a890
call fcn.0040adc0
cmp dword [ebx + 0xa4], 0
je 0x40e099
cmp dword [0x5d5f9c], 0
jle 0x40e081
call fcn.004b7416
lea edi, [eax + 0x20]
call fcn.0040ac00
inc dword [esp + 0x18]
mov eax, 0xb0
add dword [esp + 0x44], eax
add ebx, eax
add dword [esp + 0x98], eax
jmp 0x40e0cd
push ebx
call fcn.00456900
mov edx, dword [esp + 0x9c]
add esp, 4
push edx
call fcn.00456900
mov eax, dword [ebx + 0x34]
add esp, 4
call fcn.0040a580
mov eax, dword [ebx + 0x34]
push eax
call fcn.004b7229
add esp, 4
mov eax, ebx
call fcn.0040a620
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
fst qword [esp + 0x70]
fld qword [esp + 0xa0]
fxch st(1)
call fcn.004bd930
call fcn.004bd196
mov esi, dword [esp + 0x260]
mov ecx, eax
mov eax, dword [esi + 0x28]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
fld qword [esp + 0xb0]
mov dword [esp + 0x30], eax
fld qword [esp + 0x70]
mov dword [esp + 0x34], edx
call fcn.004bd930
call fcn.004bd196
mov ecx, eax
mov eax, dword [esi + 0x2c]
mov edi, edx
cdq
push edx
push eax
push edi
push ecx
call fcn.004bdf50
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x14]
xor eax, eax
mov esi, 1
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], eax
lea ebx, [ebx]
cmp eax, dword [esp + 0x7c]
je 0x40e1a7
mov eax, dword [esp + 0x50]
mov edi, dword [esp + eax*4 + 0xc8]
mov dword [esp + 0x48], edi
fild dword [esp + 0x48]
fild dword [esp + 0x4c]
call fcn.004bd930
call fcn.004bd196
mov ecx, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x2c]
push ecx
push edx
push eax
call fcn.004bdf50
imul esi, edi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x2c], edx
inc eax
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x8c]
jl 0x40e160
mov edx, dword [esp + 0x80]
push edx
lea eax, [esp + 0x20]
push eax
call fcn.00458440
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x90]
mov edi, dword [esp + 0x18]
cdq
idiv edi
lea ecx, [esp + 0x24]
mov edx, ecx
push eax
push ecx
push edx
call fcn.00459240
add esp, 0x14
lea eax, [esp + 0x38]
push esi
push eax
call fcn.00458440
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x54]
lea eax, [eax + edx]
cdq
idiv edi
push eax
lea eax, [esp + 0x44]
push eax
mov ecx, eax
push ecx
call fcn.00459240
add esp, 0x14
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x20]
push eax
mov ecx, eax
push ecx
call fcn.00458530
fild qword [esp + 0x3c]
lea edx, [esp + 0x28]
add esp, 0xc
push edx
fstp qword [esp + 0x74]
call fcn.00459540
add esp, 4
call fcn.0050dcf0
fmul qword [esp + 0xa8]
fstp qword [esp + 0xa0]
fld qword [esp + 0x70]
call fcn.0050dcf0
fadd qword [esp + 0xa0]
mov esi, dword [esp + 0x260]
mov edi, ebx
fstp qword [esp + 0x50]
call fcn.0040a710
mov esi, dword [esp + 0x28]
fld qword [esp + 0x50]
mov eax, esi
fstp qword [ebx + 0x80]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x80], eax
fild dword [esp + 0x80]
fdiv qword [esp + 0x70]
fld qword [esp + 0x58]
call fcn.004bd930
mov eax, dword [ebx + 0x34]
mov ecx, dword [esp + 0x30]
fstp qword [eax + 0x128]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x10]
mov dword [eax], ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x34]
mov dword [ebx + 0x38], esi
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x260]
mov dword [ecx + 0x94], edx
cmp dword [eax + 0x30], 2
jne 0x40e3da
mov ecx, dword [esp + 0x68]
mov edx, dword [ebx + 0x34]
push ecx
add edx, 0x10
push edx
call fcn.00458440
mov eax, dword [esp + 0x90]
add eax, dword [esp + 0x6c]
mov ecx, dword [ebx + 0x34]
cdq
idiv dword [esp + 0x18]
add ecx, 0x10
push eax
push ecx
push ecx
call fcn.00459240
mov ecx, dword [ebx + 0x34]
add esp, 0x14
lea eax, [esp + 0x1c]
push eax
add ecx, 4
push ecx
call fcn.00456880
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 0x14c
push eax
call fcn.00456880
mov ecx, dword [ebx + 0x34]
push ebx
add ecx, 0x10
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.004598d0
mov eax, dword [ebx + 0x34]
add esp, 0x1c
lea ecx, [esp + 0x38]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00458530
mov eax, dword [ebx + 0x34]
add esp, 0xc
add eax, 0x14c
push ebx
push eax
push eax
call fcn.00458470
mov eax, dword [ebx + 0x34]
lea edx, [eax + 0x10]
add esp, 0xc
push edx
add eax, 4
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00458a00
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea ecx, [esp + 0x38]
add eax, 4
push ecx
push eax
push eax
call fcn.00457360
mov eax, dword [ebx + 0x34]
add esp, 0xc
lea edx, [esp + 0x38]
add eax, 0x10
push edx
push eax
push eax
call fcn.00457360
mov esi, dword [ebx + 0x34]
add esi, 0x10
add esp, 0xc
cmp esi, esi
je 0x40e3d0
push esi
push esi
call fcn.00456880
add esp, 8
mov eax, dword [esi + 4]
neg eax
mov dword [esi + 4], eax
jmp 0x40e410
mov ecx, dword [ebx + 0x34]
add ecx, 0x10
push 0xffffffffffffffff
push ecx
call fcn.00458440
mov eax, dword [ebx + 0x34]
lea edx, [esp + 0x24]
push edx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebx + 0x34]
lea ecx, [esp + 0x2c]
push ecx
add edx, 0x14c
push edx
call fcn.00456880
add esp, 0x18
mov eax, dword [esp + 0x44]
mov edi, dword [eax]
mov eax, dword [eax + 4]
test eax, eax
jg 0x40e42a
jl 0x40e423
test edi, edi
jae 0x40e42a
neg edi
adc eax, 0
neg eax
mov esi, dword [ebx + 0x38]
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 0x3c]
test eax, eax
jg 0x40e445
jl 0x40e43e
test esi, esi
jae 0x40e445
neg esi
adc eax, 0
neg eax
mov dword [esp + 0x2c], eax
mov eax, edi
mov ecx, esi
test esi, esi
je 0x40e45d
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40e451
push 0
push eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
push ecx
push eax
call fcn.004c5de0
mov ecx, dword [esp + 0x44]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, edi
mov ecx, esi
test esi, esi
je 0x40e48d
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x40e481
mov ecx, dword [ebx + 0x38]
push 0
push eax
mov eax, dword [ebx + 0x3c]
push eax
push ecx
call fcn.004c5de0
mov esi, ebx
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
call fcn.0040a890
call fcn.0040adc0
cmp dword [ebx + 0xa4], 0
je 0x40e4e6
cmp dword [0x5d5f9c], 0
jle 0x40e4ce
call fcn.004b7416
lea edi, [eax + 0x20]
call fcn.0040ac00
inc dword [esp + 0x18]
mov eax, 0xb0
add dword [esp + 0x44], eax
add ebx, eax
add dword [esp + 0x98], eax
jmp 0x40e51a
push ebx
call fcn.00456900
mov edx, dword [esp + 0x9c]
add esp, 4
push edx
call fcn.00456900
mov eax, dword [ebx + 0x34]
add esp, 4
call fcn.0040a580
mov eax, dword [ebx + 0x34]
push eax
call fcn.004b7229
add esp, 4
mov eax, ebx
call fcn.0040a620
mov eax, dword [esp + 0x7c]
inc eax
mov dword [esp + 0x7c], eax
cmp eax, dword [esp + 0x8c]
jl 0x40dc72
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [esp + 0x90]
jle 0x40d230
jmp 0x40e5f4
mov eax, dword [ebp + 0x34]
lea ecx, [eax + 0x14c]
lea esi, [eax + 0x10]
cmp esi, ecx
je 0x40e565
push ecx
push esi
call fcn.00456880
add esp, 8
mov ecx, dword [esi + 4]
neg ecx
mov dword [esi + 4], ecx
mov eax, dword [ebp + 0x34]
lea ecx, [eax + 0x14c]
push ecx
push ecx
add eax, 4
push eax
call fcn.00458530
mov eax, dword [ebp + 0x34]
add esp, 0xc
add eax, 4
push 1
push eax
push eax
call fcn.00456ad0
mov edx, dword [ebp + 0x34]
add esp, 0xc
push ebp
add edx, 0x14c
push edx
lea eax, [esp + 0x24]
push eax
call fcn.004598d0
mov eax, dword [ebp + 0x34]
add esp, 0xc
lea ecx, [esp + 0x1c]
add eax, 0x14c
push ecx
push eax
push eax
call fcn.00459390
add esp, 0xc
jmp 0x40e5e8
lea ecx, [eax + 0x14c]
push ecx
add eax, 4
push eax
call fcn.00456880
mov edx, dword [ebp + 0x34]
add edx, 0x10
push 0xffffffffffffffff
push edx
call fcn.00458440
add esp, 0x10
mov esi, ebp
call fcn.0040a890
call fcn.0040adc0
lea eax, [esp + 0x1c]
push eax
call fcn.00456900
lea ecx, [esp + 0x3c]
add esp, 4
push ecx
call fcn.00456900
lea edx, [esp + 0xc0]
add esp, 4
push edx
call fcn.00456900
mov eax, dword [esp + 0x268]
mov ecx, dword [esp + 0x1c]
add esp, 4
pop edi
pop esi
mov dword [eax], ecx
mov eax, ebp
pop ebp
pop ebx
add esp, 0x248
ret