Function at 0x4139f0
Capabilities:
Access peb ldr_data
Get number of processors
Read file on windows
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x46fbf8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x264c
call fcn.00447580
mov eax, dword [0x493790]
push ebx
push esi
mov ebx, ecx
push edi
mov dword [esp + 0x2654], eax
mov eax, dword [ebx + 0x74]
push 0x473bb0
push eax
mov dword [esp + 0x18], ebx
call fcn.004481c9
mov esi, eax
add esp, 8
mov dword [esp + 0x3c], esi
call fcn.00460104
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
xor edi, edi
mov dword [esp + 0x2664], edi
call fcn.00460104
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x2664], 1
call fcn.00460104
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x2c], eax
mov byte [esp + 0x2664], 2
call fcn.00460104
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x34], eax
cmp dword [0x4e3afc], edi
mov byte [esp + 0x2664], 3
mov dword [esp + 0x30], edi
jne 0x413ad5
mov eax, dword [ebx + 0x70]
push edi
push edi
push 3
push edi
push 1
push 0x80000000
push eax
call dword [sym.imp.kernel32.dll_CreateFileA]
mov dword [esp + 0x30], eax
mov eax, dword [ebx + 0x1c]
push edi
push 0x64
push edi
push eax
call dword [sym.imp.user32.dll_SetTimer]
mov dword [ebx + 0x80], eax
lea esp, [esp]
mov eax, dword [ebx + 0x78]
push eax
call fcn.00458310
push esi
xor eax, eax
mov ecx, 0x7d
lea edi, [esp + 0x60]
push 4
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x44]
push 1
push ecx
call fcn.00448049
push esi
push 4
lea edx, [esp + 0x38]
push 1
push edx
call fcn.00448049
push esi
push 4
lea eax, [esp + 0x7c]
push 1
push eax
call fcn.00448049
mov ecx, dword [esp + 0x84]
push esi
push ecx
lea edx, [esp + 0x94]
push 1
push edx
call fcn.00448049
mov al, byte [esi + 0xc]
add esp, 0x44
test al, 0x10
jne 0x414245
lea eax, [esp + 0x58]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413b60
sub eax, edx
push eax
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x1c]
call fcn.00401800
mov esi, dword [esp + 0x14]
push esi
lea ecx, [esp + 0x38]
push 0x4744c0
push ecx
call fcn.00402a00
push 0x5c
push esi
call fcn.00447d3d
add esp, 0x14
test eax, eax
jne 0x413ba0
or eax, 0xffffffff
jmp 0x413ba2
sub eax, esi
mov ecx, dword [esi - 0xc]
push ecx
inc eax
push eax
lea edx, [esp + 0x48]
push edx
lea ecx, [esp + 0x20]
call fcn.00413950
mov ecx, dword [eax]
mov edi, dword [esp + 0x18]
lea eax, [ecx - 0x10]
add edi, 0xfffffff0
cmp eax, edi
mov byte [esp + 0x2664], 4
je 0x413c1a
mov edx, dword [edi + 0xc]
test edx, edx
jl 0x413c0c
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x413c0c
push eax
call fcn.00401fc0
mov dword [esp + 0x28], eax
add esp, 4
or ecx, 0xffffffff
lea eax, [edi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413bff
mov ecx, dword [edi]
mov edx, dword [ecx]
push edi
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0x10
mov dword [esp + 0x18], eax
jmp 0x413c1a
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.00401800
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
mov byte [esp + 0x2664], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413c50
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
jmp 0x413c50
mov esi, dword [esp + 0x14]
jmp 0x413c50
mov eax, dword [esi - 0xc]
test eax, eax
jle 0x413de7
push 0x5c
push esi
call fcn.00448ec4
add esp, 8
test eax, eax
je 0x413de7
sub eax, esi
cmp eax, 0xffffffff
mov dword [esp + 0x28], eax
je 0x413de7
push eax
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x1c]
call fcn.0040f4b0
mov eax, dword [eax]
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffff0
lea esi, [eax - 0x10]
cmp esi, ecx
mov byte [esp + 0x2664], 5
mov dword [esp + 0x20], ecx
je 0x413d41
mov edx, ecx
mov ecx, dword [edx + 0xc]
test ecx, ecx
jl 0x413d33
mov ecx, dword [esi]
cmp ecx, dword [edx]
jne 0x413d33
mov edx, dword [ecx]
call dword [edx + 0x10]
mov edx, dword [esi + 0xc]
test edx, edx
lea ecx, [esi + 0xc]
jl 0x413cdb
cmp eax, dword [esi]
jne 0x413cdb
mov ebx, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x413d0f
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
mov ebx, eax
test ebx, ebx
je 0x414240
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov eax, ecx
shr ecx, 2
add esi, 0x10
lea edi, [ebx + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x20]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413d2a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
add ebx, 0x10
mov dword [esp + 0x2c], ebx
jmp 0x413d41
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x34]
call fcn.00401800
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
mov byte [esp + 0x2664], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413d67
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov edi, dword [esp + 0x28]
inc edi
jns 0x413d70
xor edi, edi
mov ebx, dword [esp + 0x14]
mov esi, dword [ebx - 0xc]
cmp edi, esi
jle 0x413d7d
mov edi, esi
test edi, edi
jle 0x413dc4
mov eax, dword [ebx - 4]
sub esi, edi
cmp eax, 1
jle 0x413d9c
mov eax, dword [ebx - 0xc]
push eax
lea ecx, [esp + 0x18]
call fcn.004014f0
mov ebx, dword [esp + 0x14]
lea eax, [esi + 1]
push eax
add edi, ebx
push edi
push ebx
call fcn.00447a00
add esp, 0xc
test esi, esi
jl 0x414236
cmp esi, dword [ebx - 8]
jg 0x414236
mov dword [ebx - 0xc], esi
mov byte [esi + ebx], 0
mov esi, dword [esp + 0x2c]
push esi
call fcn.004582e4
push esi
call fcn.00458310
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
add esp, 8
test eax, eax
jg 0x413c42
mov ecx, dword [esp + 0x34]
push ecx
push 0x40c
mov ecx, ebx
call fcn.0045f379
mov ecx, eax
call fcn.0045f49d
mov eax, dword [0x4e3afc]
test eax, eax
jne 0x413fdb
mov eax, dword [esp + 0x38]
xor ecx, ecx
push ecx
push 0x800
push ecx
push eax
call fcn.00448660
push 0
mov dword [esp + 0x50], edx
lea edx, [esp + 0x50]
push edx
push eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.kernel32.dll_SetFilePointer]
mov ecx, dword [esp + 0x18]
push 0x473e98
push ecx
mov dword [esp + 0x50], eax
call fcn.004481c9
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
xor edx, edx
mov ecx, 0x2400
div ecx
add esp, 8
xor edi, edi
push edi
push edi
push 0x402
xor ebx, ebx
mov ecx, eax
mov dword [esp + 0x18], edx
mov eax, 0x51eb851f
mul ecx
mov esi, edx
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0xa0]
shr esi, 5
push eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x38], esi
call dword [sym.imp.user32.dll_SendMessageA]
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x24], edi
jbe 0x413f5d
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 0x7d]
test al, al
jne 0x414245
mov ecx, dword [esp + 0x30]
push 0
lea edx, [esp + 0x48]
push edx
push 0x2400
lea eax, [esp + 0x25c]
push eax
push ecx
call dword [sym.imp.kernel32.dll_ReadFile]
mov edx, dword [esp + 0x20]
push edx
push 0x2400
lea eax, [esp + 0x258]
push 1
push eax
call fcn.0044853d
mov eax, dword [esp + 0x38]
add esp, 0x10
inc ebx
cmp ebx, eax
jbe 0x413f48
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0xa0]
push 0
inc edi
push edi
push 0x402
lea ecx, [ebx + esi]
push eax
mov dword [esp + 0x38], ecx
call dword [sym.imp.user32.dll_SendMessageA]
push edi
lea ecx, [esp + 0x38]
push 0x473f00
push ecx
call fcn.00402a00
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
add esp, 0xc
push edx
push 0x40d
call fcn.0045f379
mov ecx, eax
call fcn.0045f49d
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jb 0x413ea7
mov esi, dword [esp + 0x10]
mov eax, dword [esi + 0xa0]
push 0
push 0x64
push 0x402
push eax
call dword [sym.imp.user32.dll_SendMessageA]
push 0x474414
push 0x40d
mov ecx, esi
call fcn.0045f379
mov ecx, eax
call fcn.0045f49d
mov esi, dword [esp + 0xc]
test esi, esi
jle 0x413fca
mov eax, dword [esp + 0x30]
push 0
lea ecx, [esp + 0x48]
push ecx
push esi
lea edx, [esp + 0x25c]
push edx
push eax
call dword [sym.imp.kernel32.dll_ReadFile]
mov ecx, dword [esp + 0x20]
push ecx
push esi
lea edx, [esp + 0x258]
push 1
push edx
call fcn.0044853d
add esp, 0x10
mov eax, dword [esp + 0x20]
push eax
call fcn.00447f0f
mov ebx, dword [esp + 0x14]
add esp, 4
cmp dword [0x4e3afc], 2
jne 0x414104
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
lea ecx, [ebx + 0xd4]
push ecx
mov ecx, dword [esp + 0x3c]
lea edx, [ebx + 0x84]
push edx
push eax
push ecx
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
add esi, 0xfffffff0
mov dword [esp + 0x38], esp
mov dword [esp + 0x20], esp
call dword [edx + 0x10]
mov edx, dword [esi + 0xc]
test edx, edx
lea ecx, [esi + 0xc]
jl 0x414033
cmp eax, dword [esi]
jne 0x414033
mov eax, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x414065
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
test eax, eax
je 0x414240
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov edx, ecx
shr ecx, 2
add esi, 0x10
lea edi, [eax + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x20]
add eax, 0x10
mov dword [ecx], eax
mov esi, dword [ebx + 0x70]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
sub esi, 0x10
mov dword [esp + 0x24], esp
mov byte [esp + 0x267c], 6
mov dword [esp + 0x24], esp
call dword [edx + 0x10]
mov ecx, dword [esi + 0xc]
test ecx, ecx
lea edx, [esi + 0xc]
jl 0x4140a8
cmp eax, dword [esi]
jne 0x4140a8
mov eax, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x4140da
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
test eax, eax
je 0x414240
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov edx, ecx
shr ecx, 2
add esi, 0x10
lea edi, [eax + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x24]
add eax, 0x10
mov dword [ecx], eax
mov ecx, 0x4df050
mov byte [esp + 0x267c], 3
call fcn.00403e10
mov al, byte [ebx + 0x7d]
test al, al
jne 0x414245
mov ebx, dword [esp + 0x10]
cmp dword [0x4e3afc], 1
jne 0x414225
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
lea edx, [ebx + 0xd4]
push edx
mov edx, dword [esp + 0x3c]
lea eax, [ebx + 0x84]
push eax
push ecx
push edx
push ecx
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
add esi, 0xfffffff0
mov dword [esp + 0x38], esp
mov dword [esp + 0x20], esp
call dword [eax + 0x10]
mov edx, dword [esi + 0xc]
test edx, edx
lea ecx, [esi + 0xc]
jl 0x41415c
cmp eax, dword [esi]
jne 0x41415c
mov eax, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x41418e
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
test eax, eax
je 0x414240
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov edx, ecx
shr ecx, 2
add esi, 0x10
lea edi, [eax + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x20]
add eax, 0x10
mov dword [ecx], eax
mov esi, dword [ebx + 0x70]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
sub esi, 0x10
mov dword [esp + 0x24], esp
mov byte [esp + 0x267c], 7
mov dword [esp + 0x24], esp
call dword [edx + 0x10]
mov ecx, dword [esi + 0xc]
test ecx, ecx
lea edx, [esi + 0xc]
jl 0x4141d1
cmp eax, dword [esi]
jne 0x4141d1
mov eax, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x4141ff
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
test eax, eax
je 0x414240
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov edx, ecx
shr ecx, 2
add esi, 0x10
lea edi, [eax + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x24]
add eax, 0x10
mov dword [ecx], eax
mov ecx, 0x4df0b0
mov byte [esp + 0x267c], 3
call fcn.0040ce90
mov al, byte [ebx + 0x7d]
test al, al
jne 0x414245
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x3c]
test byte [edx + 0xc], 0x10
jne 0x414245
mov esi, edx
jmp 0x413af0
push 0x80070057
call fcn.00401210
jmp fcn.004014e0
call fcn.00450cf0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x414259
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
mov byte [eax + 0x7c], 1
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0x2664], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x414287
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x2664], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4142ad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x2664], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4142d3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x2664], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4142fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x265c]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x2654]
call fcn.004475ee
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret