Function at 0x408b7a
Capabilities:
Get file size
Read file on windows

Disassembly:
sub esp, 0xb8
and dword [esp + 0x2c], 0
cmp byte [esp + 0xbc], 0
push ebx
push ebp
push esi
push edi
push ecx
pop edi
mov dword [esp + 0x18], 0x186a0
je 0x408bec
mov edx, 0x466468
lea ecx, [esp + 0xe8]
call fcn.004077c6
test al, al
je 0x408bec
sub esp, 0x18
lea eax, [esp + 0xe8]
mov ecx, esp
push eax
call fcn.0040905c
lea ecx, [esp + 0xb0]
call fcn.0041b432
add esp, 0x18
lea ecx, [esp + 0xe8]
push eax
call fcn.00401f13
lea ecx, [esp + 0x98]
call fcn.00401f09
push edi
pop ecx
call fcn.0040482d
push ecx
push edi
pop ecx
call fcn.004048c8
lea edx, [esp + 0xe8]
lea ecx, [esp + 0x50]
call fcn.0041bd1e
sub esp, 0x18
lea edx, [esp + 0xe8]
mov esi, esp
mov ecx, 0x474ee0
push eax
push ecx
lea eax, [esp + 0x120]
push eax
push ecx
lea ecx, [esp + 0xa8]
call fcn.0041bd1e
push eax
pop edx
lea ecx, [esp + 0x90]
call fcn.00402f10
pop ecx
push eax
pop edx
lea ecx, [esp + 0xd4]
call fcn.00402f10
pop ecx
push eax
pop edx
lea ecx, [esp + 0xb8]
call fcn.00402f10
pop ecx
push eax
pop edx
push esi
pop ecx
call fcn.00402ea1
pop ecx
push 0xb6
push edi
pop ecx
call fcn.00404aa1
cmp eax, 0xffffffff
lea ecx, [esp + 0x98]
sete bl
call fcn.00401fd8
lea ecx, [esp + 0xb0]
call fcn.00401fd8
lea ecx, [esp + 0x68]
call fcn.00401fd8
lea ecx, [esp + 0x80]
call fcn.00401fd8
lea ecx, [esp + 0x50]
call fcn.00401fd8
test bl, bl
je 0x408cc4
push edi
pop ecx
call fcn.00404e26
xor ebx, ebx
jmp 0x408f73
xor ebx, ebx
lea ecx, [esp + 0xd0]
push ebx
push 0x80
push 3
push ebx
push 1
push closesocket
call fcn.00401f04
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileW]
push eax
pop ebp
cmp ebp, 0xffffffff
jne 0x408d0d
sub esp, 0x18
mov ecx, esp
push 0x4660a4
call fcn.00402093
push 0x53
push edi
pop ecx
call fcn.00404aa1
jmp 0x409002
lea eax, [esp + 0x48]
mov dword [esp + 0x48], ebx
push eax
push ebp
mov dword [esp + 0x54], ebx
call dword [sym.imp.KERNEL32.DLL_GetFileSizeEx]
mov edx, dword [esp + 0x4c]
mov eax, 0x186a0
mov ecx, dword [esp + 0x48]
xor esi, esi
push ebx
push eax
push edx
inc esi
mov dword [esp + 0x40], ecx
push ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], ebx
call fcn.00457200
add eax, esi
lea ecx, [esp + 0x68]
adc edx, ebx
push edx
push eax
call fcn.0041bbc8
sub esp, 0x10
lea ecx, [esp + 0x98]
mov esi, esp
push eax
push 0x474ee0
push dword [esp + 0x50]
push dword [esp + 0x58]
call fcn.0041bbc8
pop ecx
pop ecx
push eax
pop edx
lea ecx, [esp + 0x70]
call fcn.00402f10
pop ecx
push eax
pop edx
push esi
pop ecx
call fcn.00402ea1
pop ecx
push 0xb7
push edi
pop ecx
call fcn.00404aa1
lea ecx, [esp + 0x50]
call fcn.00401fd8
lea ecx, [esp + 0x80]
call fcn.00401fd8
lea ecx, [esp + 0x68]
call fcn.00401fd8
lea edx, [esp + 0xd0]
lea ecx, [esp + 0x50]
call fcn.0041bcbe
sub esp, 0x18
mov edx, str.Uploading_file_to_Controller:
mov ecx, esp
push eax
call fcn.004052fd
sub esp, 0x14
mov ecx, esp
push 0x465fa4
call fcn.00402093
call fcn.0041b4ef
add esp, 0x30
lea ecx, [esp + 0x50]
call fcn.00401fd8
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
cmp dword [esp + 0x30], ebx
jb 0x408f63
ja 0x408e21
cmp dword [esp + 0x34], ebx
jbe 0x408f63
mov eax, dword [esp + 0x44]
xor esi, esi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov eax, 0x186a0
mov edx, dword [esp + 0x1c]
cmp esi, edx
jb 0x408e54
mov ecx, dword [esp + 0x14]
ja 0x408e4a
cmp eax, ecx
jbe 0x408e54
push ecx
pop eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], eax
push eax
call fcn.00434798
pop ecx
push ebx
push ebx
push dword [esp + 0x34]
push eax
pop esi
mov dword [esp + 0x44], ebx
push dword [esp + 0x34]
mov dword [esp + 0x50], esi
push ebp
call dword [sym.imp.KERNEL32.DLL_SetFilePointerEx]
test eax, eax
je 0x408fcf
push ebx
lea eax, [esp + 0x3c]
push eax
mov eax, dword [esp + 0x20]
push eax
push esi
push ebp
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
je 0x408fc3
push dword [esp + 0x38]
lea ecx, [esp + 0x6c]
push esi
call fcn.004020b7
sub esp, 0x18
lea ecx, [esp + 0x98]
mov esi, esp
push eax
push 0x474ee0
push dword [esp + 0x44]
push dword [esp + 0x44]
call fcn.0041bbc8
pop ecx
pop ecx
push eax
pop edx
lea ecx, [esp + 0x70]
call fcn.00402f10
pop ecx
push eax
pop edx
push esi
pop ecx
call fcn.00402ea1
pop ecx
push 0x52
push edi
pop ecx
call fcn.00404aa1
cmp eax, 0xffffffff
lea ecx, [esp + 0x50]
sete bl
call fcn.00401fd8
lea ecx, [esp + 0x80]
call fcn.00401fd8
lea ecx, [esp + 0x68]
call fcn.00401fd8
test bl, bl
jne 0x408fa6
push dword [esp + 0x40]
call fcn.004347a1
mov eax, dword [esp + 0x1c]
sub dword [esp + 0x18], eax
mov esi, dword [esp + 0x40]
sbb dword [esp + 0x20], esi
add dword [esp + 0x24], 1
mov edx, dword [esp + 0x30]
pop ecx
mov ecx, dword [esp + 0x28]
push 0
pop ebx
adc dword [esp + 0x24], ebx
add ecx, eax
mov dword [esp + 0x28], ecx
adc edx, esi
mov dword [esp + 0x2c], edx
cmp edx, dword [esp + 0x30]
jb 0x408e38
ja 0x408f63
cmp ecx, dword [esp + 0x34]
jb 0x408e38
push ebp
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push edi
pop ecx
call fcn.00404e26
mov bl, 1
lea ecx, [esp + 0xd0]
call fcn.00401f09
lea ecx, [esp + 0xe8]
call fcn.00401f09
lea ecx, [esp + 0x100]
call fcn.00401fd8
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0xb8
ret 0x4c
push edi
pop ecx
call fcn.00404e26
push ebp
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push dword [esp + 0x40]
call fcn.004347a1
pop ecx
jmp 0x408cbd
sub esp, 0x18
mov ecx, esp
push str.ReadFile_error
jmp 0x408fd9
sub esp, 0x18
mov ecx, esp
push str.SetFilePointerEx_error
call fcn.00402093
sub esp, 0x18
mov ecx, esp
push 0x465f08
call fcn.00402093
call fcn.0041b4ef
push esi
call fcn.004347a1
add esp, 0x34
push ebp
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push edi
pop ecx
call fcn.00404e26
jmp 0x408f73