Function at 0x401be0
Capabilities:
Terminate process

Disassembly:
push ebp
xor eax, eax
mov ecx, 0xa
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x254]
push ebx
sub esp, 0x270
cmp dword [ebp + 8], 1
mov ebx, dword [ebp + 0xc]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x22c], eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x220], eax
mov dword [ebp - 0x224], eax
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x21c], eax
lea eax, [ebp - 0x214]
mov dword [ebp - 0x210], eax
mov dword [ebp - 0x214], eax
jle 0x402211
mov esi, 1
lea esi, [esi]
mov edx, dword [ebx + esi*4]
lea edi, [esi*4]
movzx ecx, word [edx]
test cx, cx
je 0x401cb0
mov eax, edx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x401c70
sub eax, edx
cmp eax, 4
jne 0x401cb0
and ecx, 0xfffffffd
cmp cx, 0x2d
jne 0x401cb0
movzx eax, word [edx + 2]
sub eax, 0x3f
cmp ax, 0x39
ja case.0x401c9d.1
movzx eax, ax
jmp dword [eax*4 + 0x406898]
lea eax, [esi + 1]
cmp dword [ebp + 8], eax
jg 0x4021c0
cmp dword [ebp + 8], esi
jle 0x401cfc
lea esi, [esi]
mov edi, dword [ebx + esi*4]
mov dword [esp + 4], 0xc
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x402b30
mov edx, dword [ebp - 0x210]
lea ecx, [ebp - 0x214]
mov dword [eax + 8], edi
add esi, 1
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [edx], eax
mov dword [ebp - 0x210], eax
cmp dword [ebp + 8], esi
jne 0x401cb8
mov eax, dword [ebp - 0x254]
test eax, eax
je 0x402211
mov esi, dword [ebp - 0x250]
test esi, esi
je 0x402116
mov ebx, dword [ebp - 0x23c]
test ebx, ebx
jne 0x401ddc
mov edx, dword [ebp - 0x238]
or edx, dword [ebp - 0x234]
jne 0x401f8f
mov ecx, dword [ebp - 0x248]
mov edx, 1
test ecx, ecx
jne 0x401df3
mov ecx, dword [ebp - 0x240]
or ecx, dword [ebp - 0x244]
jne 0x401df3
test byte [section..data], 2
jne 0x402af8
mov dword [esp], str.Usage:_msidb__OPTION_..._OPTION_...__TABLE_..._TABLE__nOptions:_n____________________Show_this_usage_message_and_exit._n___a_file.cab_______Add_stream_cabinet_file_to__Streams_table._n___c________________Create_database_file__instead_of_opening_existing_file_._n___d_package.msi____Path_to_the_database_file._n___e________________Export_tables_from_database._n___f_folder_________Folder_in_which_to_open_save_the_tables._n___i________________Import_tables_into_database._n___k_file.cab_______Kill__remove__stream_cabinet_file_from__Streams_table._n___s________________Export_with_short_filenames__eight_character_max_._n___x_file.cab_______Extract_stream_cabinet_file_from__Streams_table._n
call fcn.00401bc0
lea esi, [esi]
lea esi, [esi]
mov eax, dword [ebp - 0x24c]
test eax, eax
je 0x402255
mov dword [esp], eax
mov esi, 1
call sub.msi.dll_MsiCloseHandle
sub esp, 4
test eax, eax
je 0x401ea0
test byte [section..data], 4
je 0x401ea0
mov dword [esp + 0xc], str.Failed_to_close_database_handle._n
mov dword [esp + 8], str.close_database
mov dword [esp + 4], 0x404000
mov dword [esp], 2
call fcn.00401340
jmp 0x401ea0
lea ebx, [ebp - 0x214]
cmp dword [ebp - 0x214], ebx
je 0x402168
mov edx, 3
lea ecx, [ebp - 0x24c]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp], eax
call sub.msi.dll_MsiOpenDatabaseW
sub esp, 0xc
mov ebx, eax
test eax, eax
jne 0x40225f
mov edi, dword [ebp - 0x248]
test edi, edi
jne 0x40230a
mov esi, dword [ebp - 0x234]
test esi, esi
jne 0x4024a1
mov ecx, dword [ebp - 0x244]
test ecx, ecx
jne 0x4025a0
mov esi, dword [ebp - 0x238]
test esi, esi
jne 0x4025df
mov ebx, dword [ebp - 0x240]
mov eax, dword [ebp - 0x24c]
test ebx, ebx
jne 0x402720
test eax, eax
je 0x402303
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseCommit
sub esp, 4
test eax, eax
jne 0x4022f6
mov eax, dword [ebp - 0x24c]
xor esi, esi
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
sub esp, 4
test eax, eax
jne 0x401da6
lea esi, [esi]
nop
mov eax, dword [ebp - 0x22c]
lea edx, [ebp - 0x22c]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov edi, dword [eax]
cmp eax, edx
je 0x401edd
lea esi, [esi]
nop
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [esp], eax
call ebx
mov eax, edi
lea ecx, [ebp - 0x22c]
mov edi, dword [edi]
cmp eax, ecx
jne 0x401ec0
mov eax, dword [ebp - 0x224]
lea edx, [ebp - 0x224]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov edi, dword [eax]
cmp eax, edx
je 0x401f15
lea esi, [esi]
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [esp], eax
call ebx
mov eax, edi
lea ecx, [ebp - 0x224]
mov edi, dword [edi]
cmp eax, ecx
jne 0x401ef8
mov eax, dword [ebp - 0x21c]
lea edx, [ebp - 0x21c]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov edi, dword [eax]
cmp eax, edx
je 0x401f4d
lea esi, [esi]
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [esp], eax
call ebx
mov eax, edi
lea ecx, [ebp - 0x21c]
mov edi, dword [edi]
cmp eax, ecx
jne 0x401f30
mov eax, dword [ebp - 0x214]
lea edx, [ebp - 0x214]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov edi, dword [eax]
cmp eax, edx
je 0x401f85
lea esi, [esi]
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [esp], eax
call ebx
mov eax, edi
lea ecx, [ebp - 0x214]
mov edi, dword [edi]
cmp eax, ecx
jne 0x401f68
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
lea ebx, [ebp - 0x214]
cmp dword [ebp - 0x214], ebx
je 0x4027c1
mov edx, 1
jmp 0x401df3
mov dword [ebp - 0x238], 1
mov eax, 1
lea esi, [esi]
add esi, eax
cmp dword [ebp + 8], esi
jg 0x401c58
jmp 0x401cfc
lea eax, [esi + 1]
cmp dword [ebp + 8], eax
jle 0x401cb0
mov eax, dword [ebx + edi + 4]
mov dword [ebp - 0x250], eax
mov eax, 2
jmp 0x401fc0
mov dword [ebp - 0x234], 1
mov eax, 1
jmp 0x401fc0
lea eax, [esi + 1]
cmp dword [ebp + 8], eax
jle 0x401cb0
mov eax, dword [ebx + edi + 4]
mov dword [ebp - 0x254], eax
mov eax, 2
jmp 0x401fc0
lea eax, [esi + 1]
cmp dword [ebp + 8], eax
jle 0x401cb0
mov dword [ebp - 0x244], 1
mov edi, dword [ebx + edi + 4]
mov dword [esp + 4], 0xc
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x402b21
mov edx, dword [ebp - 0x220]
mov dword [eax + 8], edi
lea edi, [ebp - 0x224]
mov dword [eax], edi
mov dword [eax + 4], edx
mov dword [edx], eax
mov dword [ebp - 0x220], eax
mov eax, 2
jmp 0x401fc0
mov dword [ebp - 0x230], 1
mov eax, 1
jmp 0x401fc0
mov dword [ebp - 0x23c], 1
mov eax, 1
jmp 0x401fc0
lea eax, [esi + 1]
cmp dword [ebp + 8], eax
jle 0x401cb0
mov dword [ebp - 0x248], 1
mov edi, dword [ebx + edi + 4]
mov dword [esp + 4], 0xc
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x402b21
mov edx, dword [ebp - 0x228]
mov dword [eax + 8], edi
lea edi, [ebp - 0x22c]
mov dword [eax], edi
mov dword [eax + 4], edx
mov dword [edx], eax
mov dword [ebp - 0x228], eax
mov eax, 2
jmp 0x401fc0
mov dword [esp], str.Usage:_msidb__OPTION_..._OPTION_...__TABLE_..._TABLE__nOptions:_n____________________Show_this_usage_message_and_exit._n___a_file.cab_______Add_stream_cabinet_file_to__Streams_table._n___c________________Create_database_file__instead_of_opening_existing_file_._n___d_package.msi____Path_to_the_database_file._n___e________________Export_tables_from_database._n___f_folder_________Folder_in_which_to_open_save_the_tables._n___i________________Import_tables_into_database._n___k_file.cab_______Kill__remove__stream_cabinet_file_from__Streams_table._n___s________________Export_with_short_filenames__eight_character_max_._n___x_file.cab_______Extract_stream_cabinet_file_from__Streams_table._n
call fcn.00401bc0
mov dword [esp], 0
call dword [sym.imp.ucrtbase.dll_exit]
mov edx, dword [ebp - 0x248]
or edx, dword [ebp - 0x240]
or edx, dword [ebp - 0x244]
jne 0x401d18
test byte [section..data], 2
je 0x401d6a
mov dword [esp + 0xc], str.No_table_folder_specified___f_option_._n
mov dword [esp + 8], str.valid_state
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x401d6a
mov edx, dword [ebp - 0x248]
test edx, edx
jne 0x401dee
mov edx, dword [ebp - 0x240]
or edx, dword [ebp - 0x244]
jne 0x401dee
test byte [section..data], 2
je 0x401d80
mov dword [esp + 0xc], str.No_tables_specified._n
mov dword [esp + 8], str.valid_state
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x401d80
mov dword [ebp - 0x240], 1
mov edi, dword [ebx + edi + 4]
mov dword [esp + 4], 0xc
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x402b21
mov edx, dword [ebp - 0x218]
mov dword [eax + 8], edi
lea edi, [ebp - 0x21c]
mov dword [eax], edi
mov dword [eax + 4], edx
mov dword [edx], eax
mov dword [ebp - 0x218], eax
mov eax, 2
jmp 0x401fc0
test byte [section..data], 1
je 0x401d80
mov dword [esp + 0xc], str.GUI_operation_is_not_currently_supported._n
mov esi, 1
mov dword [esp + 8], str.valid_state
mov dword [esp + 4], 0x404000
mov dword [esp], 0
call fcn.00401340
mov eax, dword [ebp - 0x24c]
test eax, eax
jne 0x401e85
mov esi, 1
jmp 0x401ea0
test byte [section..data], 2
je 0x401d80
mov eax, dword [ebp - 0x254]
call fcn.00401060
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_open_database__s__error__d_n
mov dword [esp + 8], 0x4069fc
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
test byte [section..data], 2
je 0x401d80
mov eax, dword [ebp - 0x254]
call fcn.00401060
mov dword [esp + 0xc], str.Failed_to_open_database__s._n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.wmain
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
mov eax, dword [ebp - 0x24c]
test eax, eax
jne 0x401d8e
jmp 0x402255
test byte [section..data], 2
jne 0x402833
xor esi, esi
jmp 0x401ea0
mov esi, dword [ebp - 0x22c]
lea eax, [ebp - 0x22c]
cmp esi, eax
je 0x401e24
lea eax, [ebp - 0x20c]
mov dword [ebp - 0x264], eax
lea esi, [esi]
mov eax, dword [ebp - 0x264]
mov ebx, dword [esi + 8]
mov dword [esp + 4], str.INSERT_INTO__Streams__Name__Data__VALUES_______
mov dword [ebp - 0x20c], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24c]
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseOpenViewW
sub esp, 0xc
test eax, eax
je 0x40238f
test byte [section..data], 2
jne 0x402427
mov eax, dword [ebp - 0x20c]
test eax, eax
je 0x401d80
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
sub esp, 4
jmp 0x401d80
mov dword [esp], 2
call sub.msi.dll_MsiCreateRecord
sub esp, 4
mov edi, eax
test eax, eax
jne 0x4023d3
test byte [section..data], 2
je 0x402371
mov dword [esp + 0xc], str.Failed_to_create_MSI_record._n
mov dword [esp + 8], str.add_stream
mov dword [esp + 4], section..data
mov dword [esp], 1
call fcn.00401340
jmp 0x402371
mov dword [esp + 4], 0x2f
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcsrchr]
test eax, eax
je 0x402700
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov dword [esp], edi
call sub.msi.dll_MsiRecordSetStringW
sub esp, 0xc
test eax, eax
je 0x402450
test byte [section..data], 2
jne 0x4029ad
mov dword [esp], edi
call sub.msi.dll_MsiCloseHandle
sub esp, 4
jmp 0x402371
mov dword [esp + 0xc], str.Failed_to_open__Streams_table._n
mov dword [esp + 8], str.add_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402371
mov dword [esp + 8], ebx
mov dword [esp + 4], 2
mov dword [esp], edi
call sub.msi.dll_MsiRecordSetStreamW
sub esp, 0xc
test eax, eax
je 0x4027e8
test byte [section..data], 2
je 0x402417
mov dword [esp + 0xc], str.Failed_to_add_stream_to_MSI_record._n
mov dword [esp + 8], str.add_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402417
mov edi, dword [ebp - 0x214]
lea eax, [ebp - 0x214]
cmp edi, eax
je 0x401e32
mov dword [esp + 4], 0x406248
mov eax, dword [edi + 8]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpW]
sub esp, 8
test eax, eax
jne 0x402570
lea eax, [ebp - 0x260]
mov dword [esp + 4], str.SELECT_Name_FROM__Tables
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24c]
mov dword [ebp - 0x260], 0
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseOpenViewW
sub esp, 0xc
test eax, eax
je 0x4025f7
test byte [section..data], 2
jne 0x40285e
mov eax, dword [ebp - 0x260]
test eax, eax
je 0x401d80
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
sub esp, 4
test eax, eax
je 0x401d80
test byte [section..data], 2
je 0x401d80
mov dword [esp + 0xc], str.Failed_to_close__Streams_table._n
mov dword [esp + 8], str.export_all_tables
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x401d80
mov edx, dword [edi + 8]
lea eax, [ebp - 0x254]
call fcn.00401790
test eax, eax
je 0x401d80
mov edi, dword [edi]
lea eax, [ebp - 0x214]
cmp edi, eax
jne 0x4024b5
jmp 0x401e32
mov ebx, dword [ebp - 0x224]
lea eax, [ebp - 0x224]
cmp ebx, eax
jne 0x4025c8
jmp 0x401e40
mov ebx, dword [ebx]
lea eax, [ebp - 0x224]
cmp ebx, eax
je 0x401e40
mov edx, dword [ebx + 8]
lea eax, [ebp - 0x254]
call fcn.00401390
test eax, eax
jne 0x4025b8
jmp 0x401d80
lea eax, [ebp - 0x254]
call fcn.00401930
test eax, eax
jne 0x401e4e
jmp 0x401d80
mov eax, dword [ebp - 0x260]
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
sub esp, 8
test eax, eax
jne 0x402887
lea esi, [ebp - 0x25c]
lea ebx, [ebp - 0x20c]
jmp 0x402695
test eax, eax
jne 0x402a44
lea eax, [ebp - 0x258]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x25c]
mov dword [esp + 4], 1
mov dword [esp], eax
mov dword [ebp - 0x258], 0x100
call sub.msi.dll_MsiRecordGetStringW
sub esp, 0x10
test eax, eax
jne 0x402ab0
mov edx, ebx
lea eax, [ebp - 0x254]
call fcn.00401790
test eax, eax
je 0x402516
mov eax, dword [ebp - 0x25c]
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
sub esp, 4
test eax, eax
jne 0x402a7a
mov eax, dword [ebp - 0x260]
mov dword [esp + 4], esi
mov dword [ebp - 0x25c], 0
mov dword [esp], eax
call sub.msi.dll_MsiViewFetch
sub esp, 8
cmp eax, 0x103
jne 0x402626
mov edx, str._SummaryInformation
lea eax, [ebp - 0x254]
call fcn.00401790
test eax, eax
je 0x402516
mov eax, dword [ebp - 0x260]
test eax, eax
je 0x402586
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
push edx
test eax, eax
je 0x402586
jmp 0x402537
mov dword [esp + 4], 0x5c
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcsrchr]
mov ecx, eax
lea eax, [eax + 2]
test ecx, ecx
cmove eax, ebx
jmp 0x4023ef
mov esi, dword [ebp - 0x21c]
lea ebx, [ebp - 0x21c]
cmp esi, ebx
je 0x401e62
lea edi, [ebp - 0x20c]
mov eax, dword [ebp - 0x24c]
mov ebx, dword [esi + 8]
mov dword [esp + 8], edi
mov dword [esp + 4], str.DELETE_FROM__Streams_WHERE_Name___
mov dword [esp], eax
mov dword [ebp - 0x20c], 0
call sub.msi.dll_MsiDatabaseOpenViewW
sub esp, 0xc
test eax, eax
je 0x4028c0
test byte [section..data], 2
je 0x402371
mov dword [esp + 0xc], str.Failed_to_open__Streams_table._n
mov dword [esp + 8], str.kill_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402371
mov dword [esp], str.Usage:_msidb__OPTION_..._OPTION_...__TABLE_..._TABLE__nOptions:_n____________________Show_this_usage_message_and_exit._n___a_file.cab_______Add_stream_cabinet_file_to__Streams_table._n___c________________Create_database_file__instead_of_opening_existing_file_._n___d_package.msi____Path_to_the_database_file._n___e________________Export_tables_from_database._n___f_folder_________Folder_in_which_to_open_save_the_tables._n___i________________Import_tables_into_database._n___k_file.cab_______Kill__remove__stream_cabinet_file_from__Streams_table._n___s________________Export_with_short_filenames__eight_character_max_._n___x_file.cab_______Extract_stream_cabinet_file_from__Streams_table._n
call fcn.00401bc0
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_exit]
cmp dword [ebp - 0x248], 0
jne 0x401fa1
mov edx, dword [ebp - 0x240]
or edx, dword [ebp - 0x244]
jne 0x401fa1
jmp 0x402188
mov eax, dword [ebp - 0x20c]
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
sub esp, 8
test eax, eax
jne 0x402a0e
mov dword [esp], edi
call sub.msi.dll_MsiCloseHandle
mov eax, dword [ebp - 0x20c]
sub esp, 4
test eax, eax
jne 0x402ae6
mov esi, dword [esi]
lea eax, [ebp - 0x22c]
cmp esi, eax
jne 0x402330
jmp 0x401e24
mov dword [esp + 0xc], str.Failed_to_commit_changes_to_database._n
xor esi, esi
mov dword [esp + 8], str.close_database
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x401ea0
mov dword [esp + 0xc], str.Failed_to_open__Tables_table._n
mov dword [esp + 8], str.export_all_tables
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402516
test byte [section..data], 2
je 0x402516
mov dword [esp + 0xc], str.Failed_to_query_list_from__Tables_table._n
mov dword [esp + 8], str.export_all_tables
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402516
mov dword [esp], 1
call sub.msi.dll_MsiCreateRecord
sub esp, 4
test eax, eax
jne 0x4028f5
test byte [section..data], 2
je 0x402371
mov dword [esp + 0xc], str.Failed_to_create_MSI_record._n
mov dword [esp + 8], str.kill_stream
jmp 0x4023bd
mov dword [esp + 8], ebx
mov dword [esp + 4], 1
mov dword [esp], eax
mov dword [ebp - 0x264], eax
call sub.msi.dll_MsiRecordSetStringW
mov edx, dword [ebp - 0x264]
sub esp, 0xc
test eax, eax
je 0x402954
mov edi, edx
test byte [section..data], 2
je 0x402417
mov dword [esp + 0xc], str.Failed_to_add_stream_filename_to_MSI_record._n
mov dword [esp + 8], str.kill_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402417
mov eax, dword [ebp - 0x20c]
mov dword [esp + 4], edx
mov dword [ebp - 0x264], edx
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
mov edx, dword [ebp - 0x264]
sub esp, 8
test eax, eax
jne 0x4029d6
mov dword [esp], edx
call sub.msi.dll_MsiCloseHandle
mov eax, dword [ebp - 0x20c]
sub esp, 4
test eax, eax
jne 0x402b46
mov esi, dword [esi]
lea eax, [ebp - 0x21c]
cmp esi, eax
jne 0x40273a
mov eax, dword [ebp - 0x24c]
jmp 0x401e62
mov dword [esp + 0xc], str.Failed_to_add_stream_filename_to_MSI_record._n
mov dword [esp + 8], str.add_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402417
mov edi, edx
test byte [section..data], 2
je 0x402417
mov dword [esp + 0xc], str.Failed_to_delete_stream_from__Streams_table._n
mov dword [esp + 8], str.kill_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402417
test byte [section..data], 2
je 0x402417
mov dword [esp + 0xc], str.Failed_to_add_stream_to__Streams_table._n
mov dword [esp + 8], str.add_stream
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402417
test byte [section..data], 2
je 0x402516
mov dword [esp + 0xc], str.Failed_to_query_row_from__Tables_table._n
mov dword [esp + 8], str.export_all_tables
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402516
test byte [section..data], 2
je 0x402516
mov dword [esp + 0xc], str.Failed_to_close_record_handle._n
mov dword [esp + 8], str.export_all_tables
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402516
test byte [section..data], 2
je 0x402516
mov dword [esp + 0xc], str.Failed_to_retrieve_name_string._n
mov dword [esp + 8], str.export_all_tables
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402516
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
push ebx
jmp 0x40281e
mov dword [esp + 0xc], str.No_mode_flag_specified___a___c___e___i___k___x_._n
mov dword [esp + 8], str.valid_state
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x401d6a
call fcn.00401850
lea esi, [esi]
lea esi, [esi]
test byte [section..data], 2
jne 0x402b54
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_exit]
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
push ecx
jmp 0x402992
mov dword [esp + 0xc], str.Out_of_memory_for_list._n
mov dword [esp + 8], str.list_append
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401340
jmp 0x402b39