Function at 0x401e70
Capabilities:
Delete file
Read file on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x5c
push ebx
push esi
push edi
mov edi, dword [0x489aac]
mov ebx, eax
mov eax, dword [0x468c08]
shl edi, 4
mov dword [esp + 0x20], eax
call fcn.00409ea0
mov dword [esp + 0x5c], eax
mov eax, dword [0x4a5b2c]
lea edi, [eax + eax + 1]
imul edi, eax
add edi, edi
add edi, edi
add edi, edi
call fcn.00409ea0
mov edi, dword [0x4a5b2c]
mov ecx, eax
mov eax, edi
imul eax, edi
add eax, eax
add eax, eax
add eax, eax
mov dword [esp + 0x2c], ecx
add ecx, eax
add eax, ecx
mov dword [esp + 0x38], eax
mov eax, dword [0x489ac8]
xor esi, esi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x1c], esi
test eax, eax
jle 0x401f00
mov ecx, dword [0x4804d0]
add ecx, 4
jmp 0x401ef0
cmp dword [ecx], 0
jle 0x401ef6
inc esi
add ecx, 4
dec eax
jne 0x401ef0
mov dword [esp + 0x1c], esi
add edi, ebx
imul edi, esi
shl edi, 4
call fcn.00409ea0
mov ecx, eax
mov eax, esi
imul eax, ebx
add eax, eax
add eax, eax
add eax, eax
mov dword [esp + 0x44], ecx
add ecx, eax
add eax, ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [0x4a5b2c]
imul ecx, esi
lea edx, [eax + ecx*8]
mov dword [esp + 0x4c], eax
mov eax, dword [0x480394]
push eax
mov dword [esp + 0x54], edx
call dword [sym.imp.MSVCR100.dll__ftelli64]
add esp, 4
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
call fcn.00408b60
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], eax
cmp dword [0x4802e0], eax
jle 0x4023f1
mov ecx, dword [0x4a5b2c]
mov eax, dword [esp + 0x18]
mov edx, dword [ebp + 0xc]
imul ecx, eax
imul eax, dword [esp + 0x1c]
mov esi, dword [sym.imp.MSVCR100.dll_fread]
mov edi, dword [0x489ac8]
lea ebx, [edx + ecx*8]
mov ecx, dword [esp + 0x44]
lea edx, [ecx + eax*8]
mov eax, dword [0x480394]
push eax
push 1
lea ecx, [esp + 0x18]
push 4
push ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x68], edx
call esi
add esp, 0x10
cmp eax, 1
jne 0x402023
mov eax, dword [esp + 0x10]
add eax, eax
add eax, eax
je 0x401fdb
mov edx, dword [0x480394]
push edx
push 1
push eax
mov eax, dword [0x468c08]
push eax
call esi
add esp, 0x10
lea eax, [edi*8]
test eax, eax
je 0x401ff9
mov ecx, dword [0x480394]
mov edx, dword [ebp + 0x10]
push ecx
push 1
push eax
push edx
call esi
add esp, 0x10
mov edx, dword [0x489ac8]
mov edi, dword [ebp + 0x14]
mov eax, edx
imul eax, dword [esp + 0x10]
add eax, eax
add eax, eax
add eax, eax
je 0x40202c
mov ecx, dword [0x480394]
push ecx
push 1
push eax
push edi
call esi
add esp, 0x10
jmp 0x402026
mov edi, dword [ebp + 0x14]
mov edx, dword [0x489ac8]
cmp dword [0x4a5b3c], 0
je 0x402042
cmp dword [0x480384], 0
je 0x4021fa
cmp dword [0x476d10], 0
jne 0x4021fa
cmp dword [ebp + 8], 0
je 0x4021fa
mov esi, dword [esp + 0x10]
dec esi
mov dword [esp + 0x28], 0
js 0x4021e4
mov ecx, dword [esp + 0x20]
fld qword [0x4a5b10]
lea eax, [esi + 1]
mov dword [esp + 0x30], eax
lea eax, [ecx + esi*4]
mov dword [esp + 0x34], eax
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp edx, 4
jl 0x40212b
mov ebx, dword [0x4a5b20]
add ebx, 8
cmp dword [ebx - 8], 0
je 0x4020bb
mov eax, edx
imul eax, esi
add eax, ecx
fld qword [edi + eax*8]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x4020bb
inc dword [esp + 0x14]
cmp dword [ebx - 4], 0
je 0x4020db
mov eax, edx
imul eax, esi
add eax, ecx
fld qword [edi + eax*8 + 8]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x4020db
inc dword [esp + 0x14]
cmp dword [ebx], 0
je 0x4020fa
mov eax, edx
imul eax, esi
add eax, ecx
fld qword [edi + eax*8 + 0x10]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x4020fa
inc dword [esp + 0x14]
cmp dword [ebx + 4], 0
je 0x40211a
mov eax, edx
imul eax, esi
add eax, ecx
fld qword [edi + eax*8 + 0x18]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x40211a
inc dword [esp + 0x14]
add ecx, 4
lea eax, [edx - 3]
add ebx, 0x10
cmp ecx, eax
jl 0x40209c
cmp ecx, edx
jge 0x402158
mov eax, dword [0x4a5b20]
cmp dword [eax + ecx*4], 0
je 0x402153
mov eax, edx
imul eax, esi
add eax, ecx
fld qword [edi + eax*8]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x402153
inc dword [esp + 0x14]
inc ecx
cmp ecx, edx
jl 0x40212f
cmp dword [esp + 0x14], 0
je 0x4021c3
mov ecx, dword [esp + 0x10]
fstp st(0)
mov eax, dword [esp + 0x30]
sub ecx, esi
imul eax, edx
dec ecx
imul ecx, edx
imul edx, esi
add ecx, ecx
add ecx, ecx
add ecx, ecx
push ecx
lea ecx, [edi + eax*8]
push ecx
lea edx, [edi + edx*8]
push edx
call dword [sym.imp.MSVCR100.dll_memmove]
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 1]
add esp, 0xc
cmp esi, ecx
je 0x4021b3
sub eax, esi
lea edx, [eax*4 - 4]
mov eax, dword [esp + 0x34]
push edx
lea ecx, [eax + 4]
push ecx
push eax
call sub.MSVCR100.dll_memcpy
add esp, 0xc
inc dword [esp + 0x28]
fld qword [0x4a5b10]
mov edx, dword [0x489ac8]
dec dword [esp + 0x30]
sub dword [esp + 0x34], 4
dec esi
jns 0x402084
cmp dword [esp + 0x28], 0
fstp st(0)
je 0x4021e4
mov eax, dword [esp + 0x28]
sub dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x3c]
xor ecx, ecx
test eax, eax
setle cl
dec ecx
and ecx, eax
mov dword [esp + 0x10], ecx
fld1
xor eax, eax
cmp dword [esp + 0x10], eax
jle 0x402224
mov edx, dword [0x4a5b2c]
mov ecx, dword [esp + 0x20]
imul edx, eax
add edx, dword [ecx + eax*4]
inc eax
fst qword [ebx + edx*8]
cmp eax, dword [esp + 0x10]
jl 0x402204
mov edx, dword [0x489ac8]
mov ecx, dword [0x4a5b2c]
mov ebx, dword [esp + 0x38]
test ecx, ecx
jle 0x40224c
and ecx, 0x1fffffff
add ecx, ecx
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, dword [0x4a5b2c]
mov edx, dword [0x489ac8]
mov edi, dword [esp + 0x10]
xor esi, esi
test edi, edi
jle 0x402297
xor edx, edx
test ecx, ecx
jle 0x40228c
mov edi, dword [esp + 0x3c]
mov eax, ecx
imul eax, esi
add eax, edx
fld qword [edi + eax*8]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x402283
fld qword [ebx + edx*8]
fadd st(1)
fstp qword [ebx + edx*8]
mov ecx, dword [0x4a5b2c]
inc edx
cmp edx, ecx
jl 0x40225c
mov edi, dword [esp + 0x10]
inc esi
cmp esi, edi
jl 0x402256
mov edx, dword [0x489ac8]
xor eax, eax
fstp st(0)
test edi, edi
jle 0x4022d9
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
jmp 0x4022b6
mov ecx, dword [0x4a5b2c]
mov edx, dword [esi + eax*4]
fild dword [esp + 0x10]
imul ecx, eax
fdivr qword [edi + edx*8]
add ecx, edx
lea ecx, [ebx + ecx*8]
inc eax
fsubr qword [ecx]
fstp qword [ecx]
cmp eax, dword [esp + 0x10]
jl 0x4022b0
mov edx, dword [0x489ac8]
xor esi, esi
test edx, edx
jle 0x40232d
mov ecx, dword [0x46922c]
add ecx, 4
mov dword [esp + 0x3c], ecx
lea esp, [esp]
mov eax, dword [esp + 0x3c]
cmp dword [eax], 3
jne 0x402323
xor eax, eax
cmp dword [esp + 0x10], eax
jle 0x402323
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
imul edx, eax
add edx, esi
lea ecx, [edi + edx*8]
inc eax
fld qword [ecx]
fsub qword [ebx + esi*8]
fstp qword [ecx]
mov edx, dword [0x489ac8]
cmp eax, dword [esp + 0x10]
jl 0x402307
add dword [esp + 0x3c], 4
inc esi
cmp esi, edx
jl 0x4022f0
xor esi, esi
test edx, edx
jle 0x402393
mov eax, dword [0x46922c]
mov ecx, dword [esp + 0x58]
add eax, 4
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x3c]
cmp dword [eax], 3
jne 0x402389
xor eax, eax
cmp dword [esp + 0x10], eax
jle 0x40237e
mov edi, dword [esp + 0x1c]
mov ebx, dword [ebp + 0x14]
add edi, edi
add edi, edi
add edi, edi
imul edx, eax
add edx, esi
inc eax
fld qword [ebx + edx*8]
fstp qword [ecx]
mov edx, dword [0x489ac8]
add ecx, edi
cmp eax, dword [esp + 0x10]
jl 0x402365
mov ecx, dword [esp + 0x34]
add ecx, 8
mov dword [esp + 0x34], ecx
add dword [esp + 0x3c], 4
inc esi
cmp esi, edx
jl 0x402347
mov esi, dword [esp + 0x40]
mov ecx, esi
mov eax, 4
lea edx, [esp + 0x10]
call fcn.004091b0
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
add eax, eax
add eax, eax
mov ecx, esi
call fcn.004091b0
mov eax, dword [0x489ac8]
imul eax, dword [esp + 0x10]
mov edx, dword [ebp + 0x14]
add eax, eax
add eax, eax
add eax, eax
mov ecx, esi
call fcn.004091b0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
add dword [esp + 0x18], ecx
inc eax
mov dword [esp + 0x24], eax
cmp eax, dword [0x4802e0]
jl 0x401f70
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
mov ecx, dword [0x480394]
push 0
push edx
push eax
push ecx
call dword [sym.imp.MSVCR100.dll__fseeki64]
mov ecx, dword [ebp + 0xc]
mov eax, dword [0x4a5b2c]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
push ecx
push eax
push edx
push eax
mov eax, esi
call fcn.004080b0
mov ecx, dword [0x4a5b2c]
lea ebx, [ecx - 1]
add esp, 0x20
mov edi, ecx
mov dword [esp + 0x30], edi
test ebx, ebx
js 0x40258e
mov edx, dword [ebp + 0xc]
fldz
lea eax, [ebx + 1]
mov dword [esp + 0x38], eax
lea eax, [edx + ebx*8]
mov dword [esp + 0x28], eax
mov eax, esi
sub eax, edx
mov dword [esp + 0x58], eax
lea edx, [ecx + 1]
imul edx, ebx
fld qword [esi + edx*8]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x40257c
mov edx, dword [esp + 0x38]
fstp st(0)
mov eax, ecx
imul edx, ecx
sub eax, ebx
dec eax
imul eax, ecx
imul ecx, ebx
add eax, eax
add eax, eax
add eax, eax
push eax
lea eax, [esi + edx*8]
push eax
lea ecx, [esi + ecx*8]
push ecx
call dword [sym.imp.MSVCR100.dll_memmove]
mov edx, dword [0x4a5b2c]
lea eax, [edx - 1]
add esp, 0xc
test eax, eax
js 0x4024fb
lea ecx, [edx*8]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x58]
add ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
lea ecx, [eax + 1]
mov dword [esp + 0x34], ecx
lea esp, [esp]
cmp ebx, eax
jge 0x4024ed
mov edi, dword [esp + 0x3c]
mov ecx, eax
sub ecx, ebx
add ecx, ecx
and ecx, 0x3ffffffe
lea esi, [edi + 8]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
add dword [esp + 0x3c], ecx
dec dword [esp + 0x34]
jne 0x4024d0
fldz
mov ecx, dword [esp + 0x18]
imul edx, eax
add edx, eax
dec ecx
mov dword [esp + 0x24], ecx
fst qword [esi + edx*8]
mov eax, dword [0x4a5b2c]
lea edi, [eax - 1]
mov edx, eax
mov dword [esp + 0x3c], edi
js 0x402560
add eax, eax
add eax, eax
add eax, eax
lea edi, [ecx + 1]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], edi
cmp ebx, dword [esp + 0x3c]
jge 0x402556
mov ecx, dword [esp + 0x3c]
sub ecx, ebx
add ecx, ecx
and ecx, 0x3ffffffe
lea esi, [eax + 8]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
add eax, dword [esp + 0x14]
dec dword [esp + 0x34]
jne 0x402533
mov edi, dword [esp + 0x30]
imul edx, ecx
add edx, dword [esp + 0x3c]
mov ecx, dword [ebp + 0xc]
dec edi
mov dword [esp + 0x30], edi
fst qword [ecx + edx*8]
mov ecx, dword [0x4a5b2c]
dec dword [esp + 0x38]
sub dword [esp + 0x28], 8
dec ebx
jns 0x40245a
fstp st(0)
mov edx, dword [ebp + 0x18]
mov eax, dword [esp + 0x48]
push ecx
push ecx
push edx
push eax
push esi
push edi
call fcn.00407460
add esp, 0x18
test eax, eax
je 0x4026fc
mov ecx, dword [0x489ad0]
mov esi, dword [sym.imp.MSVCR100.dll_fprintf]
push str.Unable_to_compute_inv_CC__for_double_mean_centering.
push ecx
call esi
add esp, 8
cmp dword [0x4a5b3c], 0
je 0x402640
cmp dword [0x489ad0], 0
je 0x402640
push str.stdout
push 0x476be0
call dword [sym.imp.MSVCR100.dll__stricmp]
add esp, 8
test eax, eax
je 0x402616
mov edx, dword [0x489ad0]
push edx
call dword [sym.imp.MSVCR100.dll__ftelli64]
add esp, 4
push edx
push eax
mov eax, dword [0x489ad0]
push eax
call dword [sym.imp.MSVCR100.dll__fileno]
add esp, 4
push eax
call dword [sym.imp.MSVCR100.dll__chsize_s]
add esp, 0xc
cmp dword [0x4a5b4c], 0
je 0x402630
mov ecx, dword [0x489ad0]
push str.__body___html__n
push ecx
call esi
add esp, 8
mov edx, dword [0x489ad0]
push edx
call dword [sym.imp.MSVCR100.dll_fclose]
add esp, 4
call fcn.0040a1a0
mov eax, dword [0x469488]
mov esi, dword [sym.imp.MSVCR100.dll_remove]
inc dword [0x468ff8]
push eax
call esi
mov ecx, dword [0x4899d8]
add esp, 4
push ecx
call esi
mov edx, dword [0x4802bc]
add esp, 4
push edx
call esi
mov eax, dword [0x4802cc]
add esp, 4
push eax
call esi
mov ecx, dword [0x469488]
mov esi, dword [sym.imp.MSVCR100.dll_free]
add esp, 4
push ecx
call esi
mov edx, dword [0x4899d8]
add esp, 4
push edx
call esi
mov eax, dword [0x4802bc]
add esp, 4
push eax
call esi
mov ecx, dword [0x4802cc]
add esp, 4
push ecx
call esi
add esp, 4
cmp dword [0x468ff8], 0
je 0x4026f4
mov edi, dword [sym.imp.MSVCR100.dll_clock]
call edi
mov ecx, eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
call edi
mov ecx, eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, esi
cmp eax, 3
jbe 0x4026d8
push 0x64
call dword [sym.imp.MSVCR100.dll_exit]
mov esi, dword [esp + 0x1c]
mov ecx, dword [0x4a5b2c]
mov edx, dword [esp + 0x44]
mov eax, dword [ebp + 0xc]
mov ebx, dword [esp + 0x18]
push esi
push esi
push ecx
mov ecx, dword [esp + 0x58]
push edx
push eax
push ebx
push edi
mov eax, esi
call fcn.00407b10
mov ecx, dword [0x4a5b2c]
mov edx, dword [esp + 0x64]
add esp, 0x1c
push esi
push esi
push ecx
mov ecx, dword [esp + 0x5c]
push edx
mov edx, dword [esp + 0x5c]
push edi
push edi
mov eax, esi
call fcn.00407a00
mov eax, dword [0x4a5b2c]
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x68]
push esi
push esi
push eax
push ecx
mov ecx, dword [esp + 0x7c]
push edi
push ebx
mov eax, esi
call fcn.00407a00
mov edx, dword [0x468b64]
mov esi, dword [sym.imp.MSVCR100.dll__fseeki64]
xor ebx, ebx
push ebx
push ebx
push ebx
push edx
call esi
mov edi, dword [esp + 0x80]
add esp, 0x40
push ebx
push ebx
push ebx
push edi
call esi
mov eax, dword [0x480394]
add esp, 0x10
mov dword [esp + 0x18], ebx
mov dword [esp + 0x58], eax
mov dword [0x480394], edi
mov dword [esp + 0x24], ebx
cmp dword [0x4802e0], ebx
jle 0x402903
mov ebx, dword [sym.imp.MSVCR100.dll_fread]
mov eax, dword [esp + 0x18]
mov esi, dword [ebp + 0x14]
imul eax, dword [esp + 0x1c]
mov edx, dword [0x480394]
mov ecx, dword [esp + 0x54]
push edx
push 1
lea edi, [ecx + eax*8]
lea eax, [esp + 0x18]
push 4
push eax
call ebx
add esp, 0x10
cmp eax, 1
jne 0x402822
mov eax, dword [esp + 0x10]
add eax, eax
add eax, eax
je 0x4027ff
mov ecx, dword [0x480394]
mov edx, dword [0x468c08]
push ecx
push 1
push eax
push edx
call ebx
add esp, 0x10
mov eax, dword [0x489ac8]
mov ecx, eax
imul ecx, dword [esp + 0x10]
add ecx, ecx
add ecx, ecx
add ecx, ecx
je 0x402827
mov eax, dword [0x480394]
push eax
push 1
push ecx
push esi
call ebx
add esp, 0x10
mov eax, dword [0x489ac8]
xor esi, esi
test eax, eax
jle 0x402897
mov ecx, dword [0x46922c]
mov edx, edi
add ecx, 4
mov dword [esp + 0x50], edx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x3c]
cmp dword [ecx], 3
jne 0x40288d
xor ecx, ecx
cmp dword [esp + 0x10], ecx
jle 0x40287c
mov edi, dword [esp + 0x1c]
mov ebx, dword [ebp + 0x14]
add edi, edi
add edi, edi
add edi, edi
mov edi, edi
imul eax, ecx
add eax, esi
lea eax, [ebx + eax*8]
inc ecx
fld qword [eax]
fsub qword [edx]
add edx, edi
fstp qword [eax]
mov eax, dword [0x489ac8]
cmp ecx, dword [esp + 0x10]
jl 0x402860
mov edx, dword [esp + 0x50]
mov ebx, dword [sym.imp.MSVCR100.dll_fread]
add edx, 8
mov dword [esp + 0x50], edx
add dword [esp + 0x3c], 4
inc esi
cmp esi, eax
jl 0x402840
mov ecx, dword [0x468b64]
mov eax, 4
lea edx, [esp + 0x10]
call fcn.004091b0
mov eax, dword [esp + 0x10]
mov ecx, dword [0x468b64]
mov edx, dword [esp + 0x20]
add eax, eax
add eax, eax
call fcn.004091b0
mov eax, dword [0x489ac8]
imul eax, dword [esp + 0x10]
mov esi, dword [ebp + 0x14]
mov ecx, dword [0x468b64]
add eax, eax
add eax, eax
add eax, eax
mov edx, esi
call fcn.004091b0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
add eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], ecx
cmp ecx, dword [0x4802e0]
jl 0x4027b9
mov eax, dword [0x468b64]
mov edx, dword [esp + 0x58]
push 0
push 0
push 0
push eax
mov dword [0x480394], edx
call dword [sym.imp.MSVCR100.dll__fseeki64]
mov ecx, dword [esp + 0x50]
push ecx
call fcn.00408fc0
mov eax, dword [esp + 0x58]
mov esi, dword [sym.imp.MSVCR100.dll_free]
add esp, 0x14
test eax, eax
je 0x402940
push eax
call esi
add esp, 4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40294e
push eax
call esi
add esp, 4
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x40295c
push eax
call esi
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret