Function at 0x4082a0
Capabilities:
Check if file exists
Read file on windows
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x441886
mov eax, dword fs:[0]
push eax
sub esp, 0x440
mov eax, dword [0x458778]
xor eax, esp
mov dword [esp + 0x43c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x458778]
xor eax, esp
push eax
lea eax, [esp + 0x454]
mov dword fs:[0], eax
mov edi, dword [esp + 0x47c]
mov dword [esp + 0x18], edi
mov esi, dword [esp + 0x478]
push 0x445770
mov ebx, 1
push esi
mov dword [esp + 0x464], ebx
call fcn.0042af6b
xor ebp, ebp
add esp, 8
cmp eax, ebp
sete al
test al, al
jne 0x408629
test byte [esp + 0x474], 0x80
jne 0x408629
mov ecx, dword [esi - 0xc]
lea eax, [ecx - 1]
cmp eax, ebp
jl 0x40861f
cmp eax, ecx
jg 0x40861f
cmp byte [eax + esi], 0x5c
je 0x408351
push 0x4457f4
lea ecx, [esp + 0x47c]
call fcn.004023b0
mov eax, dword [esp + 0x468]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x480]
call fcn.00401e50
mov esi, dword [esp + 0x478]
mov eax, dword [esi - 0xc]
cmp eax, ebp
jl 0x408394
push str.hjjmmove.fff.hjm0
push esi
call fcn.0042aa8c
add esp, 8
cmp eax, ebp
je 0x408394
sub eax, esi
cmp eax, 0xffffffff
jne 0x4084b3
cmp dword [esi - 0xc], ebp
jl 0x4083b6
push str.hjjm.dll
push esi
call fcn.0042aa8c
add esp, 8
cmp eax, ebp
je 0x4083b6
sub eax, esi
cmp eax, 0xffffffff
jne 0x4084b3
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x4084b3
mov eax, dword [0x459b88]
cmp eax, 2
je 0x40843b
cmp eax, 3
je 0x40843b
push ebp
lea ecx, [esp + 0x20]
call fcn.00407a70
lea ecx, [esp + 0x14]
call fcn.004019f0
push esi
lea eax, [esp + 0x18]
push 0x446a18
push eax
mov byte [esp + 0x468], 3
call fcn.00402000
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x94]
call fcn.00401f40
lea ecx, [esp + 0x1c]
call fcn.00411c71
lea ecx, [esp + 0x14]
call fcn.00401a20
lea ecx, [esp + 0x1c]
mov byte [esp + 0x45c], 1
call fcn.00407950
mov eax, dword [0x459b88]
cmp eax, ebp
je 0x408444
cmp eax, 2
jne 0x40844a
add dword [0x459b84], ebx
cmp eax, ebx
je 0x408486
cmp eax, 3
je 0x408486
cmp dword [0x459bc8], ebp
je 0x4084b3
add dword [0x459b80], ebx
lea ecx, [esp + 0x464]
mov byte [esp + 0x45c], 0
call fcn.004090c0
lea ecx, [esp + 0x478]
call fcn.00401a20
jmp 0x408675
add dword [0x459b80], ebx
lea ecx, [esp + 0x464]
mov byte [esp + 0x45c], 0
call fcn.004090c0
lea ecx, [esp + 0x478]
call fcn.00401a20
mov al, 1
jmp 0x408677
push 0x445840
push esi
call fcn.0042bdce
mov ebx, eax
add esp, 8
cmp ebx, ebp
jne 0x40850a
push 0x4469fc
mov ecx, 0x459d88
call fcn.00402060
lea ecx, [esp + 0x464]
mov byte [esp + 0x45c], 0
call fcn.004090c0
lea eax, [esi - 0x10]
mov dword [esp + 0x45c], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x408669
mov ecx, dword [esp + 0x470]
push ebp
push ecx
push edi
call fcn.0042bc85
mov eax, dword [esp + 0x478]
add esp, 0xc
test eax, eax
mov dword [0x459ba8], eax
mov dword [0x459ba4], ebp
ja 0x408544
push ebx
call fcn.0042b704
add esp, 4
jmp 0x40848c
mov edi, dword [esp + 0x18]
cmp dword [0x459bc8], 0
jne 0x4085e5
push 0x3ff
lea edx, [esp + 0x21]
push 0
push edx
mov byte [esp + 0x28], 0
call fcn.0042b470
push edi
push 0x400
lea eax, [esp + 0x30]
push 1
push eax
call fcn.0042b9dd
mov esi, dword [esp + 0x488]
add esp, 0x1c
mov edi, eax
sub esi, ebp
cmp esi, edi
push ebx
jae 0x4085a0
push esi
lea ecx, [esp + 0x24]
push 1
push ecx
call fcn.0042b604
add esp, 0x10
cmp eax, esi
jmp 0x4085b2
push edi
lea edx, [esp + 0x24]
push 1
push edx
call fcn.0042b604
add esp, 0x10
cmp eax, edi
jne 0x408602
cmp dword [esp + 0x480], 0
jne 0x408532
add ebp, edi
cmp ebp, dword [esp + 0x46c]
mov dword [0x459ba4], ebp
jb 0x408540
push ebx
call fcn.0042b704
add esp, 4
jmp 0x40848c
push ebx
call fcn.0042b704
add esp, 4
push 0x44579c
mov ecx, 0x459d88
call fcn.00402060
jmp 0x408461
push ebx
call fcn.0042b704
add esp, 4
push 0x4469e4
mov ecx, 0x459d88
call fcn.00402060
jmp 0x408461
push 0x80070057
call fcn.004010a0
push 0xa
push 0x4469a4
mov ecx, 0x459d88
call fcn.00401c00
lea ecx, [esp + 0x464]
mov byte [esp + 0x45c], 0
call fcn.004090c0
lea eax, [esi - 0x10]
mov dword [esp + 0x45c], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x408675
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
mov ecx, dword [esp + 0x454]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x43c]
xor ecx, esp
call fcn.0042b460
add esp, 0x44c
ret 0x20