Function at 0x40af50
Capabilities:
Get number of processors
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x445d21
mov eax, dword fs:[0]
push eax
mov eax, 0x10058
call fcn.00431b50
mov eax, dword [0x45accc]
xor eax, esp
mov dword [esp + 0x10054], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x45accc]
xor eax, esp
push eax
lea eax, [esp + 0x1006c]
mov dword fs:[0], eax
mov eax, dword [esp + 0x1007c]
mov esi, dword [esp + 0x10084]
mov ebp, ecx
mov ecx, dword [esp + 0x10080]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x54], esi
call fcn.0041aec8
xor ecx, ecx
xor edi, edi
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40afce
push 0x80004005
call fcn.00401460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x10074], edi
mov dword [esp + 0x38], edi
mov byte [esp + 0x1a], 0
mov dword [esp + 0x34], edi
call fcn.0041aec8
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40b00c
push 0x80004005
call fcn.00401460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0x10074], 1
call fcn.0041aec8
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40b03e
push 0x80004005
call fcn.00401460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
cmp byte [ebp + 0x218], 1
mov byte [esp + 0x10074], 2
mov byte [esp + 0x19], 0
mov dword [esp + 0x44], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], edi
push 0x10000
jne 0x40b089
push 0xff
lea ecx, [esp + 0x70]
push ecx
jmp 0x40b08f
push edi
lea edx, [esp + 0x70]
push edx
call fcn.00431320
add esp, 0xc
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x1f]
mov dword [esp + 0x40], edi
call fcn.00406db0
push edi
mov dword [esp + 0x2c], edi
call fcn.00406f60
mov esi, dword [esi]
mov ebx, dword [esp + 0x1009c]
add esp, 4
sub ebx, esi
mov dword [esp + 0x48], ebx
jmp 0x40b0d0
mov ecx, dword [ebp + 0x204]
push 0x10000
push edi
push ecx
call fcn.00431320
add esp, 0xc
cmp ebx, 0x80
jae 0x40b283
cmp byte [esp + 0x1a], 0
mov byte [esp + 0x19], 1
jne 0x40b106
mov byte [esp + 0x1a], 1
mov dword [esp + 0x40], esi
mov edx, dword [ebp + 0x204]
movsx eax, byte [0x45ca28]
push edx
push ebx
push esi
lea edi, [ebp + 0x438]
push eax
mov ecx, edi
call fcn.004107f0
test eax, eax
je 0x40b17c
mov ecx, dword [ebp + 0x204]
movsx eax, byte [0x45ca28]
push ecx
lea edx, [ebx - 1]
push edx
push esi
push eax
mov ecx, edi
call fcn.004107f0
test eax, eax
jne 0x40b585
mov edx, dword [ebp + 0x204]
mov ecx, ebx
shl ecx, 9
lea eax, [ecx + edx - 0x200]
movsx edx, byte [0x45ca28]
push eax
push 1
lea ecx, [ebx + esi - 1]
push ecx
push edx
mov ecx, edi
call fcn.004107f0
test eax, eax
jne 0x40b627
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
push 2
lea eax, [esp + 0x5c]
push eax
xor eax, eax
push eax
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
cmp eax, 0xffffffff
je 0x40b66d
mov ecx, dword [ebp + 0x204]
mov edx, dword [esp + 0x30]
push 0
lea eax, [esp + 0x3c]
push eax
mov eax, dword [edx]
mov edi, ebx
shl edi, 9
push edi
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40b674
cmp dword [esp + 0x38], edi
jne 0x40b674
mov al, byte [0x45ca37]
test al, al
jne 0x40b200
mov ecx, dword [ebp + 0x204]
push edi
push ecx
lea edx, [esp + 0x34]
push edx
lea ecx, [esp + 0x27]
call fcn.00406dc0
mov eax, dword [ebp + 0x204]
push 0
push edi
push eax
lea ecx, [esp + 0x34]
push ecx
jmp 0x40b22f
cmp al, 1
jne 0x40b21c
mov edx, dword [ebp + 0x204]
push edi
push edx
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x27]
call fcn.00406dc0
jmp 0x40b237
cmp al, 2
jne 0x40b237
mov ecx, dword [ebp + 0x204]
push 0
push edi
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00406f80
add esp, 0x10
mov ecx, dword [esp + 0x10098]
add esi, ebx
mov eax, esi
imul eax, eax, 0x64
xor edx, edx
div ecx
push ecx
push esi
xor ebx, ebx
mov dword [esp + 0x50], ebx
push eax
lea eax, [esp + 0x20]
push 0x44a844
push eax
call fcn.004026d0
mov ecx, dword [esp + 0x28]
add esp, 0x14
push ecx
mov ecx, dword [esp + 0x20]
push 0x3ee
call fcn.0041a30b
mov edi, dword [esp + 0x10098]
jmp 0x40b576
mov edx, dword [ebp + 0x204]
movsx eax, byte [0x45ca28]
push edx
push 0x80
push esi
lea edi, [ebp + 0x438]
push eax
mov ecx, edi
call fcn.004107f0
test eax, eax
je 0x40b2f3
mov ecx, dword [ebp + 0x204]
movsx edx, byte [0x45ca28]
push ecx
push 0x7f
push esi
push edx
mov ecx, edi
call fcn.004107f0
test eax, eax
jne 0x40b627
mov eax, dword [ebp + 0x204]
movsx edx, byte [0x45ca28]
add eax, 0xfe00
push eax
push 1
lea ecx, [esi + 0x7f]
push ecx
push edx
mov ecx, edi
call fcn.004107f0
test eax, eax
jne 0x40b627
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
push 2
lea eax, [esp + 0x5c]
push eax
xor eax, eax
push eax
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
cmp eax, 0xffffffff
je 0x40b66d
mov edi, dword [ebp + 0x204]
lea eax, [esp + 0x68]
mov edx, edi
mov ebx, eax
mov ecx, 0x10000
sub edx, ebx
lea esp, [esp]
mov ebx, dword [eax + edx]
cmp ebx, dword [eax]
jne 0x40b3bd
sub ecx, 4
add eax, 4
cmp ecx, 4
jae 0x40b330
inc dword [esp + 0x3c]
cmp byte [esp + 0x19], 0
je 0x40b41e
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
push 0
lea eax, [esp + 0x3c]
push eax
push 0x10000
push edi
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40b674
cmp dword [esp + 0x38], 0x10000
jne 0x40b674
mov al, byte [0x45ca37]
test al, al
jne 0x40b3df
mov eax, dword [ebp + 0x204]
push 0x10000
push eax
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x27]
call fcn.00406dc0
mov edx, dword [ebp + 0x204]
push 0
push 0x10000
push edx
lea eax, [esp + 0x34]
push eax
jmp 0x40b416
cmp byte [esp + 0x1a], 0
mov dword [esp + 0x3c], 0
mov byte [esp + 0x19], 1
jne 0x40b355
mov byte [esp + 0x1a], 1
mov dword [esp + 0x40], esi
jmp 0x40b355
cmp al, 1
jne 0x40b3ff
mov ecx, dword [ebp + 0x204]
push 0x10000
push ecx
lea edx, [esp + 0x34]
push edx
lea ecx, [esp + 0x27]
call fcn.00406dc0
jmp 0x40b41e
cmp al, 2
jne 0x40b41e
mov eax, dword [ebp + 0x204]
push 0
push 0x10000
push eax
lea ecx, [esp + 0x34]
push ecx
call fcn.00406f80
add esp, 0x10
mov edi, dword [esp + 0x10098]
sub esi, 0xffffff80
mov eax, esi
imul eax, eax, 0x2710
xor edx, edx
div edi
mov ebx, dword [esp + 0x48]
add ebx, 0xffffff80
mov dword [esp + 0x48], ebx
test eax, eax
jbe 0x40b537
mov ecx, dword [esp + 0x44]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + eax*4]
add edx, edx
sub ecx, edx
jne 0x40b4de
push ecx
call fcn.004329ce
add esp, 4
sub eax, dword [esp + 0x1008c]
sbb edx, dword [esp + 0x10090]
mov dword [esp + 0x60], eax
mov eax, esi
mov dword [esp + 0x64], edx
fild qword [esp + 0x60]
mov dword [esp + 0x4c], eax
fild dword [esp + 0x4c]
test eax, eax
jge 0x40b49c
fadd dword [0x44a840]
mov ecx, edi
fdivp st(1)
sub ecx, esi
mov dword [esp + 0x4c], ecx
fild dword [esp + 0x4c]
test ecx, ecx
jge 0x40b4b4
fadd dword [0x44a840]
fnstcw word [esp + 0x34]
movzx eax, word [esp + 0x34]
fmulp st(1)
or eax, 0xc00
mov dword [esp + 0x4c], eax
fldcw word [esp + 0x4c]
fistp qword [esp + 0x4c]
mov ecx, dword [esp + 0x4c]
fldcw word [esp + 0x34]
mov dword [esp + 0x34], ecx
jmp 0x40b4e2
mov ecx, dword [esp + 0x34]
inc dword [esp + 0x44]
cmp ecx, 0x3c
jbe 0x40b516
mov eax, 0x88888889
mul ecx
mov eax, esi
imul eax, eax, 0x64
shr edx, 5
push edx
xor edx, edx
div edi
push edi
push esi
lea edx, [esp + 0x20]
push eax
push str.Complete:__d_______d____d____need__u_minutes_more_
push edx
call fcn.004026d0
add esp, 0x18
jmp 0x40b555
mov eax, esi
imul eax, eax, 0x64
xor edx, edx
div edi
push ecx
push edi
push esi
push eax
lea eax, [esp + 0x24]
push str.Complete:__d_______d____d____need__u_seconds_more_
push eax
call fcn.004026d0
add esp, 0x18
jmp 0x40b555
mov eax, esi
imul eax, eax, 0x64
xor edx, edx
div edi
push edi
push esi
lea ecx, [esp + 0x1c]
push eax
push 0x44a844
push ecx
call fcn.004026d0
add esp, 0x14
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push edx
push 0x3ee
call fcn.0041a30b
cmp dword [esp + 0x3c], 0xa0
je 0x40b67b
cmp esi, edi
jae 0x40b67b
xor edi, edi
jmp 0x40b0d0
push str._Error__Tester_build_image_failure_on_read_card_data___r_n
lea eax, [esp + 0x18]
push eax
call fcn.004026d0
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
add esp, 8
push esi
push 0x3ee
call fcn.0041a30b
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x10074], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b5d2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x10074], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b5fa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov dword [esp + 0x10074], edx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b61d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
jmp 0x40b746
push str._Error__Tester_build_image_failure_on_read_card_data___r_n
lea ecx, [esp + 0x18]
push ecx
call fcn.004026d0
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
add esp, 8
push esi
push 0x3ee
call fcn.0041a30b
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x10074], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x40b5c6
push str._Error__Tester_build_image_failure_on_set_file_pointer___r_n
jmp 0x40b62c
push str._Error__Save_Image_failure___r_n
jmp 0x40b62c
cmp byte [esp + 0x19], 0
je 0x40b6c7
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [0x45c4f0]
push edx
mov edx, dword [esp + 0x38]
mov edi, esi
sub edi, eax
push edi
push ecx
push eax
push 1
push 1
push edx
mov ecx, ebp
call fcn.00409170
test eax, eax
je 0x40b6bb
push str._Error__Save_Data_Table_Fail___r_n
jmp 0x40b58a
add dword [0x45c4f0], edi
mov dword [0x45c530], esi
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov dword [ecx], esi
or ecx, 0xffffffff
lea edx, [eax + 0xc]
mov byte [esp + 0x10074], 1
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40b6f5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x10074], 0
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b71d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov dword [esp + 0x10074], edx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b744
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x1006c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x10054]
xor ecx, esp
call fcn.00431b39
add esp, 0x10064
ret 0x20