Function at 0x40d0b0
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
xor eax, eax
mov ecx, 0x41
push edi
push esi
push ebx
sub esp, 0x56c
lea ebx, [esp + 0x5c]
mov edi, ebx
rep stosd dword es:[edi], eax
mov dword [esp], 0x4c4b40
lea edi, [esp + 0x4c]
call sym.safe_malloc_int_
mov dword [esp + 0x24], eax
lea eax, [esp + 0x160]
mov dword [esp], eax
call sym.Generatesbox_int_
mov eax, dword [esp + 0x584]
mov dword [esp + 4], 0x516678
mov dword [esp], eax
call sym.safe_fopen_char__char_
mov dword [esp], eax
mov dword [esp + 0x30], eax
call sym.GetEOF__iobuf_
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x580]
mov ebp, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp], str.__Calculating_checksum...
mov dword [esp + 0x3c], eax
call sym.Log_char_const__..._
mov eax, dword [esp + 0x584]
mov dword [esp + 0x44], edi
test eax, eax
je 0x40d683
mov eax, dword [esp + 0x584]
mov dword [esp], eax
call sym._strlen
mov esi, eax
cmp eax, 0xf
ja 0x40d630
cmp eax, 1
je 0x40d418
test eax, eax
jne 0x40d67f
mov eax, edi
mov dword [esp + 0x48], esi
mov byte [eax + esi], 0
lea esi, [esp + 0x44]
mov dword [esp], esi
call sym.CalculateChecksumFile_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov edx, dword [esp + 0x44]
mov esi, eax
cmp edx, edi
je 0x40d1a0
mov eax, dword [esp + 0x4c]
mov dword [esp], edx
add eax, 1
mov dword [esp + 4], eax
call sym.operator_delete_void__unsigned_int_
mov dword [esp], ebp
mov dword [esp + 4], esi
call sym.CompareChecksums_unsigned_int__unsigned_int_
mov dword [esp + 4], ebp
mov dword [esp + 8], esi
mov dword [esp], str.__Pre_update_checksum_OK_0x_08X__0x_08X
call sym.Log_char_const__..._
mov eax, dword [esp + 0x588]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._strcat
mov dword [esp], ebx
call sym._strlen
mov ecx, dword [esp + 0x584]
mov byte [ebx + eax], 0x2f
lea eax, [ebx + eax + 1]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._strcpy
mov dword [esp], ebx
call sym.CreateNewDirectoryIterate_char_
mov dword [esp], ebx
mov dword [esp + 4], 0x51647f
call sym.safe_fopen_char__char_
mov dword [esp], str.__Parsing_updates...
mov dword [esp + 0x2c], eax
call sym.Log_char_const__..._
mov eax, dword [esp + 0x580]
mov ebp, dword [eax + 8]
lea ebx, [eax + 0xc]
test ebp, ebp
je 0x40d668
xor esi, esi
mov dword [esp + 0x1c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x10], esi
jmp 0x40d387
cmp eax, 0xc
je 0x40d430
mov eax, dword [esp + 0x38]
mov edi, dword [ebx]
add ebx, 4
cmp ebp, eax
jg 0x40d548
mov dword [esp + 4], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 8], 0
mov dword [esp], edi
call sym._fseek
mov dword [esp + 0xc], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 8], 1
mov dword [esp], edi
mov dword [esp + 4], ebp
call sym._fread
mov eax, dword [esp + 0x10]
mov dword [esp], edi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], eax
lea eax, [esp + 0x160]
mov dword [esp + 4], eax
mov dword [esp + 0x1c], edi
lea edi, [ebp + esi]
call sym.CalculateChecksum_unsigned_char__int__long__unsigned_int_
mov dword [esp + 0x10], eax
cmp edi, 0x4c4b40
jbe 0x40d520
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov dword [esp + 4], esi
xor esi, esi
mov dword [esp + 8], 1
mov dword [esp + 0xc], edi
mov dword [esp], eax
call sym._fwrite
mov dword [esp + 0xc], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 8], 1
mov dword [esp + 4], ebp
mov dword [esp], edi
call sym._fwrite
add dword [esp + 0x18], ebp
mov eax, dword [esp + 0x14]
lea edi, [eax + 1]
cmp eax, 0x1f3
jbe 0x40d355
imul eax, edi, 0xc28f5c29
ror eax, 2
cmp eax, 0x28f5c28
ja 0x40d376
mov eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x584]
mov dword [esp], eax
call dword [esp + 0x58c]
mov ebp, dword [ebx]
add ebx, 4
test ebp, ebp
je 0x40d568
mov dword [esp + 0x14], edi
mov eax, ebp
shr eax, 0x1c
cmp eax, 8
jne 0x40d270
mov eax, dword [esp + 0x10]
and ebp, 0xfffffff
mov dword [esp], ebx
mov dword [esp + 8], ebp
lea edi, [ebp + esi]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x160]
mov dword [esp + 4], eax
call sym.CalculateChecksum_unsigned_char__int__long__unsigned_int_
mov dword [esp + 0x10], eax
cmp edi, 0x4c4b40
jbe 0x40d4e0
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov dword [esp + 4], esi
xor esi, esi
mov dword [esp + 8], 1
mov dword [esp + 0xc], edi
mov dword [esp], eax
call sym._fwrite
mov dword [esp + 0xc], edi
mov dword [esp + 8], 1
mov dword [esp + 4], ebp
mov dword [esp], ebx
call sym._fwrite
add dword [esp + 0x18], ebp
add ebx, ebp
jmp 0x40d337
mov eax, dword [esp + 0x584]
movzx eax, byte [eax]
mov byte [esp + 0x4c], al
jmp 0x40d16d
mov edi, ebp
mov eax, dword [esp + 0x34]
shr edi, 8
and edi, 0xfffff
cmp edi, eax
jg 0x40d610
mov eax, ebp
mov ebp, dword [esp + 0x20]
mov dword [esp + 8], edi
movzx edx, al
mov dword [esp + 4], edx
mov dword [esp], ebp
call sym._memset
mov eax, dword [esp + 0x10]
mov dword [esp], ebp
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
lea eax, [esp + 0x160]
mov dword [esp + 4], eax
mov dword [esp + 0x20], ebp
lea ebp, [edi + esi]
call sym.CalculateChecksum_unsigned_char__int__long__unsigned_int_
mov dword [esp + 0x10], eax
cmp ebp, 0x4c4b40
jbe 0x40d500
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov dword [esp + 4], esi
xor esi, esi
mov dword [esp + 8], 1
mov dword [esp + 0xc], ebp
mov dword [esp], eax
call sym._fwrite
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x20]
mov dword [esp + 8], 1
mov dword [esp + 4], edi
mov dword [esp], ebp
call sym._fwrite
add dword [esp + 0x18], edi
jmp 0x40d337
mov eax, dword [esp + 0x24]
mov dword [esp + 8], ebp
mov dword [esp + 4], ebx
add esi, eax
mov dword [esp], esi
mov esi, edi
call sym._memcpy
jmp 0x40d408
mov eax, dword [esp + 0x24]
mov dword [esp + 8], edi
add esi, eax
mov eax, dword [esp + 0x20]
mov dword [esp], esi
mov esi, ebp
mov dword [esp + 4], eax
call sym._memcpy
jmp 0x40d4d0
mov eax, dword [esp + 0x24]
mov dword [esp + 8], ebp
add esi, eax
mov eax, dword [esp + 0x1c]
mov dword [esp], esi
mov esi, edi
mov dword [esp + 4], eax
call sym._memcpy
jmp 0x40d333
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], ebp
mov dword [esp], eax
call sym.safe_realloc_unsigned_char__int_
mov dword [esp + 0x38], ebp
mov dword [esp + 0x1c], eax
jmp 0x40d28a
mov eax, esi
mov ecx, esi
mov esi, dword [esp + 0x10]
test eax, eax
je 0x40d594
mov eax, dword [esp + 0x2c]
mov dword [esp + 8], 1
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sym._fwrite
mov edi, dword [esp + 0x3c]
mov dword [esp + 4], esi
mov dword [esp], edi
call sym.CompareChecksums_unsigned_int__unsigned_int_
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], str.__Post_update_checksum_OK_0x_08X__0x_08X
call sym.Log_char_const__..._
mov dword [esp], str.__File_complete.
call sym.Log_char_const__..._
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sym._fclose
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sym._free
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
call sym._free
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call sym._free
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call sym._fclose
add esp, 0x56c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym.safe_realloc_unsigned_char__int_
mov dword [esp + 0x34], edi
mov dword [esp + 0x20], eax
jmp 0x40d447
lea eax, [eax + 1]
mov dword [esp], eax
call sym.operator_new_unsigned_int_
mov dword [esp + 0x4c], esi
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x584]
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym._memcpy
mov eax, dword [esp + 0x44]
jmp 0x40d16f
mov dword [esp + 0x20], 0
xor esi, esi
mov dword [esp + 0x1c], 0
jmp 0x40d594
mov eax, edi
jmp 0x40d643
mov dword [esp], 0x51667c
call method.std.__throw_logic_error_char_const_
mov ebx, eax
jmp sym.ParseType01_unsigned_char__char__char__int____char__long__long____clone_.cold_