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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x44
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x40], eax
push ebx
push esi
push edi
mov ebx, edx
mov dword [esp + 0x18], ecx
xorps xmm0, xmm0
mov dword [esp + 0x34], ebx
push str.___Parse_file
xor esi, esi
mov dword [esp + 0x3c], 0
push 3
mov dword [esp + 0x44], 0
mov edi, 1
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], esi
movq qword [esp + 0x48], xmm0
mov byte [esp + 0x2b], 0
call fcn.00408d60
add esp, 8
cmp dword [esp + 0x18], esi
je 0x408b86
test ebx, ebx
je 0x408b86
push str.___Read_file_content
push 3
mov dword [ebx + 0xc], 0x4ac290
mov dword [esp + 0x24], esi
call fcn.00408d60
mov ebx, dword [esp + 0x20]
add esp, 8
mov dword [esp + 0x10], esi
push esi
push esi
push 3
push esi
push 3
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esp + 0x14], eax
cmp eax, 0xffffffff
jne 0x40817c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push str.Error_opening_file__s__error:0x_X
push edi
call fcn.00408d60
push str.Read_file_content___
push 3
call fcn.00408d60
add esp, 0x18
jmp 0x408b95
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x28], eax
cmp eax, 0xffffffff
jne 0x4081ac
call ebx
push eax
push dword [esp + 0x1c]
push str.Error_getting_file_size_of__s__error:0x_X
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x408211
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x4081db
call ebx
push eax
push dword [esp + 0x2c]
push str.Cannot_allocate_buffer_of__d_bytes__error:0x_X
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x408211
push 0
lea ecx, [esp + 0x40]
push ecx
push dword [esp + 0x30]
push eax
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x40820d
call ebx
push eax
push dword [esp + 0x1c]
push str.Error_reading_file__s__error:0x_X
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x408211
mov dword [esp + 0x1c], edi
push dword [esp + 0x14]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x1c], esi
jne 0x408259
test eax, eax
je 0x408259
mov edi, dword [sym.imp.KERNEL32.dll_LocalFree]
push eax
call edi
dec dword [0x4de7b4]
push str.Read_file_content___
push 3
call fcn.00408d60
mov eax, dword [esp + 0x18]
add esp, 8
push eax
call edi
dec dword [0x4de7b4]
jmp 0x408b95
push str.Read_file_content___
push 3
mov dword [esp + 0x1c], eax
call fcn.00408d60
mov ecx, dword [esp + 0x1c]
add esp, 8
mov eax, ecx
cmp dword [esp + 0x1c], esi
je 0x408b0f
xor edx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edx
cmp dword [esp + 0x3c], edx
jbe 0x408abc
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
mov al, byte [edx + eax]
cmp al, 0x22
jne 0x4087cd
cmp byte [esp + 0x23], 0x5c
je 0x4087cd
lea eax, [edi - 1]
cmp eax, 7
ja case.0x4082ba.3
jmp dword [eax*4 + 0x408bbc]
test esi, esi
je 0x408336
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_LocalFree]
test eax, eax
je 0x4082ee
push eax
call edi
dec dword [0x4de7b4]
test eax, eax
je 0x4082e8
call ebx
push eax
push str.Cannot_free_the_name:0x_X
jmp 0x408328
mov dword [esi], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x408313
push eax
call edi
dec dword [0x4de7b4]
test eax, eax
je 0x40830c
call ebx
push eax
push str.Cannot_free_the_value:0x_X
jmp 0x408328
mov dword [esi + 8], 0
push esi
call edi
dec dword [0x4de7b4]
test eax, eax
je 0x408332
call ebx
push eax
push str.Cannot_free_the_element:0x_X
push 1
call fcn.00408d60
add esp, 0xc
mov edx, dword [esp + 0x18]
push 0xc
push 0x40
mov dword [esp + 0x2c], edx
mov edi, 4
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov esi, eax
mov dword [esp + 0x30], esi
test esi, esi
je 0x408af9
mov edx, dword [esp + 0x18]
jmp case.0x4082ba.3
mov edi, dword [esp + 0x10]
mov ebx, edx
sub ebx, dword [esp + 0x24]
inc edi
dec ebx
add edi, dword [esp + 0x24]
je 0x40850e
test esi, esi
je 0x40850e
lea eax, [ebx*2 + 2]
mov dword [esi], 0
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esi], edx
test edx, edx
jne 0x4083fa
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
push eax
push str.Error_allocating_memory:0x_X
push 1
call fcn.00408d60
mov eax, dword [esi]
add esp, 0xc
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
test eax, eax
je 0x40851d
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
dec dword [0x4de7b4]
mov edi, 2
mov edx, dword [esp + 0x18]
mov dword [esi], 0
mov dword [esp + 0x10], ebx
jmp case.0x4082ba.3
xor eax, eax
test ebx, ebx
je 0x40851d
cmp ebx, 4
jb 0x4084f0
lea ecx, [edi - 1]
add ecx, ebx
cmp edx, ecx
lea ecx, [edx - 2]
lea ecx, [ecx + ebx*2]
ja 0x408424
cmp ecx, edi
jae 0x4084f0
cmp edx, esi
ja 0x408430
cmp ecx, esi
jae 0x4084f0
cmp ebx, 0x20
jb 0x4084c6
mov esi, dword [esp + 0x14]
mov edx, ebx
and edx, 0x1f
mov ecx, ebx
sub ecx, edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], ecx
lea edx, [edi + 0x10]
mov ecx, 0x20
nop word [eax + eax]
movq xmm0, qword [edx - 0x10]
lea ecx, [ecx + 0x40]
punpcklbw xmm0, xmm0
lea edx, [edx + 0x20]
psraw xmm0, 8
add eax, 0x20
movups xmmword [ecx + esi - 0x60], xmm0
movq xmm0, qword [edx - 0x28]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx + esi - 0x50], xmm0
movq xmm0, qword [edx - 0x20]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx + esi - 0x40], xmm0
movq xmm0, qword [edx - 0x18]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx + esi - 0x30], xmm0
cmp eax, dword [esp + 0x28]
jb 0x408460
cmp dword [esp + 0x2c], 4
mov esi, dword [esp + 0x30]
jb 0x4084ea
mov edx, dword [esi]
mov ecx, ebx
and ecx, 0xfffffffc
nop dword [eax]
movd xmm0, dword [edi + eax]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movq qword [edx + eax*2], xmm0
add eax, 4
cmp eax, ecx
jb 0x4084d0
cmp eax, ebx
jae 0x40851d
nop
movsx dx, byte [edi + eax]
mov ecx, dword [esi]
mov word [ecx + eax*2], dx
inc eax
cmp eax, ebx
jb 0x4084f0
mov edx, dword [esp + 0x18]
mov edi, 2
jmp case.0x4082ba.3
push str.NULL_parameter
push 2
call fcn.00408d60
add esp, 8
mov edx, dword [esp + 0x18]
mov edi, 2
jmp case.0x4082ba.3
mov edi, 8
jmp 0x4087f3
mov ecx, edx
lea edi, [esi + 8]
sub ecx, dword [esp + 0x24]
mov dword [esp + 0x28], edi
lea eax, [ecx - 1]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
inc eax
add eax, dword [esp + 0x24]
je 0x4085e2
test edi, edi
je 0x4085e2
push ecx
push 0x40
mov dword [edi], 0
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov dword [edi], eax
test eax, eax
jne 0x4085b8
call ebx
push eax
push str.Error_allocating_memory:0x_X
push 1
call fcn.00408d60
mov ecx, dword [edi]
add esp, 0xc
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x4085f1
push ecx
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [esp + 0x1c]
dec dword [0x4de7b4]
mov dword [edi], 0
mov dword [esp + 0x10], eax
jmp 0x4085f1
xor edx, edx
cmp dword [esp + 0x14], edx
jbe 0x4085f1
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x10]
mov ecx, dword [edi]
mov edi, dword [esp + 0x28]
mov al, byte [edx + eax + 1]
mov byte [edx + ecx], al
inc edx
cmp edx, dword [esp + 0x14]
jb 0x4085c0
mov esi, dword [esp + 0x30]
jmp 0x4085f1
push str.NULL_parameter
push 2
call fcn.00408d60
add esp, 8
mov ecx, dword [esi]
xor edi, edi
mov dword [esi + 4], 1
mov dword [esp + 0x44], 1
mov dword [esp + 0x1c], edi
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x408610
sub ecx, edx
sar ecx, 1
lea ecx, [ecx*2 + 2]
push ecx
push 0x40
mov dword [esp + 0x1c], ecx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov ecx, eax
mov dword [esp + 0x40], ecx
test ecx, ecx
jne 0x40864d
call ebx
push eax
push str.Cannot_allocate_memory_for_destination_name:0x_X
jmp 0x4086be
push dword [esi]
mov eax, dword [esp + 0x18]
shr eax, 1
push eax
push ecx
call fcn.004b3da1
add esp, 0xc
test eax, eax
je 0x40866b
push eax
push str.Cannot_copy_name:0x_X
jmp 0x4086be
mov ecx, dword [esi + 8]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408671
sub ecx, edx
lea eax, [ecx + 1]
push eax
push 0x40
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov edi, eax
mov dword [esp + 0x1c], edi
test edi, edi
jne 0x4086a4
call ebx
push eax
push str.Cannot_allocate_memory_for_destination_value:0x_X
jmp 0x4086be
push dword [esi + 8]
push dword [esp + 0x18]
push edi
call fcn.004b3e05
add esp, 0xc
test eax, eax
je 0x40872e
push eax
push str.Cannot_copy_value:0x_X
push 1
call fcn.00408d60
mov eax, dword [esp + 0x4c]
add esp, 0xc
test eax, eax
je 0x4086fd
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
dec dword [0x4de7b4]
test eax, eax
je 0x4086f5
call ebx
push eax
push str.Cannot_free_the_name:0x_X
push 1
call fcn.00408d60
add esp, 0xc
jmp 0x40872e
mov dword [esp + 0x40], 0
test edi, edi
je 0x40872e
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
dec dword [0x4de7b4]
test eax, eax
je 0x408726
call ebx
push eax
push str.Cannot_free_the_value:0x_X
push 1
call fcn.00408d60
add esp, 0xc
jmp 0x40872e
mov dword [esp + 0x1c], 0
push 0xc
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov edi, eax
test edi, edi
jne 0x40874e
call ebx
push eax
push str.Error_creating_a_new_list_entry:0x_X
jmp 0x4087b8
push 0xc
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov ecx, eax
mov dword [edi], ecx
test ecx, ecx
je 0x4087b0
movq xmm0, qword [esp + 0x40]
mov eax, dword [esp + 0x1c]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0x34]
cmp dword [ecx + 4], 0
jne 0x408794
inc dword [ecx]
mov edx, dword [esp + 0x18]
mov dword [ecx + 4], edi
mov dword [ecx + 8], edi
mov edi, 1
jmp case.0x4082ba.3
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x18]
mov dword [edi + 4], eax
mov eax, dword [ecx + 8]
mov dword [eax + 8], edi
inc dword [ecx]
mov dword [ecx + 8], edi
mov edi, 1
jmp case.0x4082ba.3
call ebx
push eax
push str.Error_copying_list_value:0x_X
push 1
call fcn.00408d60
add esp, 0xc
mov edx, dword [esp + 0x18]
mov edi, 1
jmp case.0x4082ba.3
mov cl, al
cmp al, 0x3a
je 0x40880f
cmp al, 0x2c
je 0x40880f
cmp al, 0x5b
je 0x40880f
cmp al, 0x5d
je 0x40880f
cmp al, 0x7b
je 0x40880f
cmp al, 0x7d
je 0x40880f
cmp dword [esp + 0x2c], 0
je case.0x4082ba.3
mov edi, 0x10
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], 0
mov cl, byte [edx + eax]
mov byte [esp + 0x23], cl
jmp 0x408aa7
test edi, 0x1c
jne 0x408828
mov dword [esp + 0x2c], 1
cmp cl, 0x3a
jne 0x408a9e
cmp edi, 0x10
jne 0x408aa3
mov eax, dword [esp + 0x10]
lea edi, [esi + 8]
mov ebx, edx
sub ebx, dword [esp + 0x24]
add eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
je 0x4088c9
test edi, edi
je 0x4088c9
lea eax, [ebx + 1]
mov dword [edi], 0
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov dword [edi], eax
test eax, eax
jne 0x4088ac
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
push eax
push str.Error_allocating_memory:0x_X
push 1
call fcn.00408d60
mov eax, dword [edi]
add esp, 0xc
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
test eax, eax
je 0x4088d8
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
dec dword [0x4de7b4]
mov dword [edi], 0
mov dword [esp + 0x10], ebx
jmp 0x4088d8
xor edx, edx
test ebx, ebx
je 0x4088d8
mov esi, dword [esp + 0x14]
mov ecx, dword [edi]
mov al, byte [edx + esi]
mov byte [edx + ecx], al
inc edx
cmp edx, ebx
jb 0x4088b6
mov esi, dword [esp + 0x30]
jmp 0x4088d8
push str.NULL_parameter
push 2
call fcn.00408d60
add esp, 8
mov ecx, dword [esi]
xor ebx, ebx
mov dword [esi + 4], 0
mov dword [esp + 0x44], 0
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4088f0
sub ecx, edx
sar ecx, 1
lea edi, [ecx*2 + 2]
push edi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov dword [esp + 0x40], eax
test eax, eax
jne 0x408937
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
push eax
push str.Cannot_allocate_memory_for_destination_name:0x_X
push 1
call fcn.00408d60
jmp 0x4089b3
push dword [esi]
shr edi, 1
push edi
push eax
call fcn.004b3da1
add esp, 0xc
test eax, eax
je 0x408951
push eax
push str.Cannot_copy_name:0x_X
jmp 0x4089a6
mov ecx, dword [esi + 8]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408957
sub ecx, edx
lea edi, [ecx + 1]
push edi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov ebx, eax
test ebx, ebx
jne 0x40898f
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
push eax
push str.Cannot_allocate_memory_for_destination_value:0x_X
push 1
call fcn.00408d60
jmp 0x4089b3
push dword [esi + 8]
push edi
push ebx
call fcn.004b3e05
add esp, 0xc
test eax, eax
je 0x408a16
push eax
push str.Cannot_copy_value:0x_X
push 1
call fcn.00408d60
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, dword [esp + 0x4c]
add esp, 0xc
test eax, eax
je 0x4089eb
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
dec dword [0x4de7b4]
test eax, eax
je 0x4089e3
call edi
push eax
push str.Cannot_free_the_name:0x_X
push 1
call fcn.00408d60
add esp, 0xc
jmp 0x408a16
mov dword [esp + 0x40], 0
test ebx, ebx
je 0x408a16
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
dec dword [0x4de7b4]
test eax, eax
je 0x408a14
call edi
push eax
push str.Cannot_free_the_value:0x_X
push 1
call fcn.00408d60
add esp, 0xc
jmp 0x408a16
xor ebx, ebx
push 0xc
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov edi, eax
test edi, edi
jne 0x408a3a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_creating_a_new_list_entry:0x_X
jmp 0x408a90
push 0xc
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov dword [edi], eax
test eax, eax
je 0x408a84
mov ecx, dword [esp + 0x34]
movq xmm0, qword [esp + 0x40]
movq qword [eax], xmm0
mov dword [eax + 8], ebx
cmp dword [ecx + 4], 0
jne 0x408a71
inc dword [ecx]
mov dword [ecx + 4], edi
mov dword [ecx + 8], edi
jmp 0x408a9a
mov eax, dword [ecx + 8]
mov dword [edi + 4], eax
mov eax, dword [ecx + 8]
mov dword [eax + 8], edi
inc dword [ecx]
mov dword [ecx + 8], edi
jmp 0x408a9a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_copying_list_value:0x_X
push 1
call fcn.00408d60
add esp, 0xc
mov edx, dword [esp + 0x18]
mov edi, 1
mov eax, dword [esp + 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
inc edx
mov dword [esp + 0x18], edx
cmp edx, dword [esp + 0x3c]
jb 0x408294
mov dword [esp + 0x38], 1
test esi, esi
je 0x408b0f
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_LocalFree]
test eax, eax
je 0x408b2e
push eax
call edi
dec dword [0x4de7b4]
test eax, eax
je 0x408b28
call ebx
push eax
push str.Cannot_free_the_name:0x_X
push 1
call fcn.00408d60
add esp, 0xc
mov eax, dword [esp + 0x10]
jmp 0x408b15
call ebx
push eax
push str.Cannot_allocate_memory_for_new_element:0x_X
push 1
call fcn.00408d60
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov edi, dword [sym.imp.KERNEL32.dll_LocalFree]
test eax, eax
je 0x408b95
push eax
call edi
dec dword [0x4de7b4]
jmp 0x408b95
mov dword [esi], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x408b61
push eax
call edi
dec dword [0x4de7b4]
test eax, eax
je 0x408b5a
call ebx
push eax
push str.Cannot_free_the_value:0x_X
push 1
call fcn.00408d60
mov eax, dword [esp + 0x1c]
add esp, 0xc
jmp 0x408b15
mov dword [esi + 8], 0
push esi
call edi
dec dword [0x4de7b4]
test eax, eax
je 0x408af3
call ebx
push eax
push str.Cannot_free_the_element:0x_X
push 1
call fcn.00408d60
mov eax, dword [esp + 0x1c]
add esp, 0xc
jmp 0x408b15
push str.NULL_parameter
push 1
call fcn.00408d60
add esp, 8
push str.Parse_file___
push 3
call fcn.00408d60
mov ecx, dword [esp + 0x54]
add esp, 8
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004ac4d4
mov esp, ebp
pop ebp
ret