Function at 0x401810
Capabilities:
Create directory
Execute command
Get common file path
Read file on windows
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40376a
mov eax, dword fs:[0]
push eax
sub esp, 0x518
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
lea eax, [ebp - 0x414]
push eax
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp - 0x414]
push eax
lea ecx, [ebp - 0x420]
call dword [sym.imp.mfc120.dll_Ordinal_310]
push str._raw
lea ecx, [ebp - 0x420]
mov dword [ebp - 4], 0
call dword [sym.imp.mfc120.dll_Ordinal_1691]
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push 0
push dword [ebp - 0x420]
call esi
lea eax, [ebp - 0x414]
push eax
lea ecx, [ebp - 0x41c]
call dword [sym.imp.mfc120.dll_Ordinal_310]
push str.decode
lea ecx, [ebp - 0x41c]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc120.dll_Ordinal_1691]
push 0
push dword [ebp - 0x41c]
call esi
xorps xmm0, xmm0
mov dword [ebp - 0x430], 0
movq qword [ebp - 0x438], xmm0
mov dword [ebp - 0x438], 0
mov dword [ebp - 0x430], 0
movq qword [ebp - 0x42c], xmm0
mov dword [ebp - 0x424], 0
mov dword [ebp - 0x434], 0
mov dword [ebp - 0x42c], 0
mov dword [ebp - 0x424], 0
push ecx
lea eax, [ebp - 0x420]
mov byte [ebp - 4], 3
mov ecx, esp
mov dword [ebp - 0x428], 0
push eax
lea esi, [ebp - 0x42c]
lea edi, [ebp - 0x438]
call dword [sym.imp.mfc120.dll_Ordinal_300]
mov edx, esi
mov ecx, edi
call fcn.00401400
add esp, 4
mov dword [ebp - 0x49c], 0
lea ecx, [ebp - 0x418]
mov dword [ebp - 0x498], 0
mov dword [ebp - 0x4a4], 0
call dword [sym.imp.mfc120.dll_Ordinal_316]
mov dword [ebp - 0x43c], 0xf
mov dword [ebp - 0x440], 0
mov byte [ebp - 0x450], 0
mov byte [ebp - 4], 6
mov esi, dword [ebp - 0x434]
sub esi, dword [ebp - 0x438]
sar esi, 2
mov dword [ebp - 0x4a0], esi
cmp esi, 1
jb 0x401db1
mov eax, dword [ebp - 0x428]
sub eax, dword [ebp - 0x42c]
sar eax, 2
cmp eax, 1
jb 0x401db1
push 0x228580
call fcn.00402b7c
add esp, 4
mov dword [ebp - 0x48c], eax
mov dword [ebp - 0x49c], eax
test eax, eax
jne 0x401a08
lea ecx, [ebp - 0x50c]
call dword [sym.imp.MSVCR120.dll_public:_void___thiscall_std::exception::constructor_void_]
push 0x404aac
lea eax, [ebp - 0x50c]
push eax
call sub.MSVCR120.dll__CxxThrowException
push 0x13ec8
call fcn.00402b7c
mov edi, eax
add esp, 4
mov dword [ebp - 0x494], edi
mov dword [ebp - 0x498], edi
test edi, edi
jne 0x401a44
lea ecx, [ebp - 0x524]
call dword [sym.imp.MSVCR120.dll_public:_void___thiscall_std::exception::constructor_void_]
push 0x404aac
lea eax, [ebp - 0x524]
push eax
call sub.MSVCR120.dll__CxxThrowException
push 0x9f64
call fcn.00402b7c
add esp, 4
mov dword [ebp - 0x490], eax
mov dword [ebp - 0x4a4], eax
test eax, eax
jne 0x401a7e
lea ecx, [ebp - 0x500]
call dword [sym.imp.MSVCR120.dll_public:_void___thiscall_std::exception::constructor_void_]
push 0x404aac
lea eax, [ebp - 0x500]
push eax
call sub.MSVCR120.dll__CxxThrowException
xor ebx, ebx
cmp ebx, esi
jae 0x401e0a
push 0x228580
push 0
push dword [ebp - 0x48c]
call sub.MSVCR120.dll_memset
mov eax, dword [ebp - 0x438]
push 0x404310
push dword [eax + ebx*4]
call dword [sym.imp.MSVCR120.dll_fopen]
mov esi, eax
push esi
push 0x228580
push 1
push dword [ebp - 0x48c]
call dword [sym.imp.MSVCR120.dll_fread]
push esi
call dword [sym.imp.MSVCR120.dll_fclose]
push 0x13ec8
push 0
push edi
call sub.MSVCR120.dll_memset
push 0x9f64
push 0
push dword [ebp - 0x490]
call sub.MSVCR120.dll_memset
add esp, 0x40
push edi
push dword [ebp - 0x48c]
call dword [sym.imp.IMX722_DTOF_lib.dll_IMX722_IntensityDecode]
add esp, 8
test eax, eax
je 0x401b1e
lea ecx, [ebp - 0x518]
call dword [sym.imp.MSVCR120.dll_public:_void___thiscall_std::exception::constructor_void_]
push 0x404aac
lea eax, [ebp - 0x518]
push eax
call sub.MSVCR120.dll__CxxThrowException
mov eax, dword [ebp - 0x42c]
lea ecx, [ebp - 0x4b0]
push str..raw
lea edi, [eax + ebx*4]
mov edx, edi
call fcn.00401f30
add esp, 4
mov byte [ebp - 4], 7
push dword [eax]
lea eax, [ebp - 0x418]
push dword [ebp - 0x41c]
push str._s_s
push eax
call dword [sym.imp.mfc120.dll_Ordinal_4764]
add esp, 0x10
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x4b0]
call dword [sym.imp.mfc120.dll_Ordinal_1041]
push 0x404324
push dword [ebp - 0x418]
call dword [sym.imp.MSVCR120.dll_fopen]
mov esi, eax
push esi
push 0x9f64
push 2
push dword [ebp - 0x494]
call dword [sym.imp.MSVCR120.dll_fwrite]
push esi
call dword [sym.imp.MSVCR120.dll_fclose]
mov esi, dword [ebp - 0x490]
add esp, 0x1c
mov ecx, dword [ebp - 0x494]
mov edx, esi
call fcn.004016f0
test al, al
jne 0x401bd2
lea ecx, [ebp - 0x4f4]
call dword [sym.imp.MSVCR120.dll_public:_void___thiscall_std::exception::constructor_void_]
push 0x404aac
lea eax, [ebp - 0x4f4]
push eax
call sub.MSVCR120.dll__CxxThrowException
push 0x38
lea eax, [ebp - 0x488]
push 0
push eax
call sub.MSVCR120.dll_memset
add esp, 8
lea ecx, [ebp - 0x488]
push esi
sub esp, 0xc
call fcn.004012d0
push str..bmp
mov edx, edi
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4ac]
call fcn.00401f30
add esp, 4
mov byte [ebp - 4], 9
push dword [eax]
mov esi, dword [sym.imp.mfc120.dll_Ordinal_4764]
lea eax, [ebp - 0x418]
push dword [ebp - 0x41c]
push str._s_s
push eax
call esi
add esp, 0x10
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4ac]
call dword [sym.imp.mfc120.dll_Ordinal_1041]
push 0
lea ecx, [ebp - 0x418]
call dword [sym.imp.mfc120.dll_Ordinal_5005]
push eax
lea ecx, [ebp - 0x450]
call fcn.00401ef0
lea eax, [ebp - 0x488]
push eax
lea ecx, [ebp - 0x4dc]
call dword [sym.imp.opencv_core2410.dll_public:_void___thiscall_cv::_InputArray::constructor_class_cv::Mat_const__]
mov dword [ebp - 0x4bc], 0
mov dword [ebp - 0x4b8], 0
mov dword [ebp - 0x4b4], 0
lea eax, [ebp - 0x4bc]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x4dc]
push eax
lea eax, [ebp - 0x450]
push eax
call dword [sym.imp.opencv_highgui2410.dll_bool___cdecl_cv::imwrite_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___class_cv::_InputArray_const___class_std::vector_int__class_std::allocator_int___const__]
add esp, 0xc
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4bc]
call fcn.00401fd0
push str..png
mov edx, edi
lea ecx, [ebp - 0x4a8]
call fcn.00401f30
add esp, 4
mov byte [ebp - 4], 0xb
push dword [eax]
lea eax, [ebp - 0x418]
push dword [ebp - 0x41c]
push str._s_s
push eax
call esi
add esp, 0x10
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4a8]
call dword [sym.imp.mfc120.dll_Ordinal_1041]
push 0
lea ecx, [ebp - 0x418]
call dword [sym.imp.mfc120.dll_Ordinal_5005]
push eax
lea ecx, [ebp - 0x450]
call fcn.00401ef0
lea eax, [ebp - 0x488]
push eax
lea ecx, [ebp - 0x4dc]
call dword [sym.imp.opencv_core2410.dll_public:_void___thiscall_cv::_InputArray::constructor_class_cv::Mat_const__]
mov dword [ebp - 0x4c8], 0
mov dword [ebp - 0x4c4], 0
mov dword [ebp - 0x4c0], 0
lea eax, [ebp - 0x4c8]
mov byte [ebp - 4], 0xc
push eax
lea eax, [ebp - 0x4dc]
push eax
lea eax, [ebp - 0x450]
push eax
call dword [sym.imp.opencv_highgui2410.dll_bool___cdecl_cv::imwrite_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___class_cv::_InputArray_const___class_std::vector_int__class_std::allocator_int___const__]
add esp, 0xc
lea ecx, [ebp - 0x4c8]
call fcn.00401fd0
lea ecx, [ebp - 0x488]
mov byte [ebp - 4], 6
call fcn.00401390
mov eax, dword [ebp - 0x45c]
lea ecx, [ebp - 0x458]
cmp eax, ecx
je 0x401d9f
push eax
call dword [sym.imp.opencv_core2410.dll_void___cdecl_cv::fastFree_void__]
add esp, 4
mov edi, dword [ebp - 0x494]
inc ebx
mov esi, dword [ebp - 0x4a0]
jmp 0x401a80
lea ecx, [ebp - 0x4e8]
call dword [sym.imp.MSVCR120.dll_public:_void___thiscall_std::exception::constructor_void_]
push 0x404aac
lea eax, [ebp - 0x4e8]
push eax
call sub.MSVCR120.dll__CxxThrowException
mov ecx, dword [sym.imp.MSVCP120.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
push 0x402ab0
call fcn.00402890
mov ecx, eax
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov eax, 0x401dec
ret
push dword [ebp - 0x48c]
mov esi, dword [sym.imp.mfc120.dll_Ordinal_266]
call esi
push edi
call esi
push dword [ebp - 0x490]
call esi
push str.pause
call dword [sym.imp.MSVCR120.dll_system]
add esp, 0x10
cmp dword [ebp - 0x43c], 0x10
jb 0x401e49
push dword [ebp - 0x450]
call dword [sym.imp.mfc120.dll_Ordinal_1504]
add esp, 4
lea ecx, [ebp - 0x418]
mov dword [ebp - 0x43c], 0xf
mov dword [ebp - 0x440], 0
mov byte [ebp - 0x450], 0
call dword [sym.imp.mfc120.dll_Ordinal_1041]
lea ecx, [ebp - 0x42c]
call fcn.004020a0
lea ecx, [ebp - 0x438]
call fcn.004020a0
lea ecx, [ebp - 0x41c]
call dword [sym.imp.mfc120.dll_Ordinal_1041]
lea ecx, [ebp - 0x420]
call dword [sym.imp.mfc120.dll_Ordinal_1041]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00402bba
mov esp, ebp
pop ebp
ret