Function at 0x401ff0
Capabilities:
Terminate process

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
xor eax, eax
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x260]
push ebx
push ecx
sub esp, 0x298
mov edx, dword [ecx]
mov ebx, dword [ecx + 4]
mov ecx, 0xa
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x238]
mov dword [ebp - 0x234], eax
mov dword [ebp - 0x238], eax
lea eax, [ebp - 0x230]
mov dword [ebp - 0x22c], eax
mov dword [ebp - 0x230], eax
lea eax, [ebp - 0x228]
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x220]
mov dword [ebp - 0x27c], edx
mov dword [ebp - 0x21c], eax
mov dword [ebp - 0x220], eax
cmp edx, 1
jle 0x402580
mov esi, 1
lea esi, [esi]
nop
mov edx, dword [ebx + esi*4]
lea edi, [esi*4]
movzx ecx, word [edx]
test cx, cx
je 0x4020e0
mov eax, edx
add eax, 2
cmp word [eax], 0
jne 0x402094
sub eax, edx
cmp eax, 4
jne 0x4020e0
and ecx, 0xfffffffd
cmp cx, 0x2d
jne 0x4020e0
movzx eax, word [edx + 2]
sub eax, 0x3f
cmp ax, 0x39
ja case.0x4020c1.1
movzx eax, ax
jmp dword [eax*4 + 0x405894]
lea eax, [esi + 1]
cmp dword [ebp - 0x27c], eax
jg 0x402491
nop
cmp dword [ebp - 0x27c], esi
jle 0x402108
mov eax, dword [ebp - 0x27c]
lea esi, [ebx + esi*4]
lea ebx, [ebx + eax*4]
mov edx, dword [esi]
lea eax, [ebp - 0x220]
add esi, 4
call fcn.004013d0
cmp ebx, esi
jne 0x4020f4
mov eax, dword [ebp - 0x260]
test eax, eax
je 0x402580
mov esi, dword [ebp - 0x25c]
test esi, esi
je 0x402420
mov ebx, dword [ebp - 0x248]
test ebx, ebx
jne 0x4021e0
mov edx, dword [ebp - 0x244]
or edx, dword [ebp - 0x240]
jne 0x402400
mov ecx, dword [ebp - 0x254]
mov edx, 1
test ecx, ecx
jne 0x4021f7
mov ecx, dword [ebp - 0x24c]
or ecx, dword [ebp - 0x250]
jne 0x4021f7
test byte [section..data], 2
jne 0x403135
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.004010a0
mov eax, dword [ebp - 0x258]
test eax, eax
je 0x402570
mov dword [esp], eax
mov ebx, 1
call sub.msi.dll_MsiCloseHandle
sub esp, 4
test eax, eax
je 0x40229c
test byte [section..data], 4
je 0x40229c
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.00401300
jmp 0x40229c
lea edi, [ebp - 0x220]
cmp dword [ebp - 0x220], edi
je 0x402470
mov edx, 3
lea edi, [ebp - 0x258]
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp], eax
call sub.msi.dll_MsiOpenDatabaseW
sub esp, 0xc
mov ebx, eax
test eax, eax
jne 0x402600
mov ecx, dword [ebp - 0x254]
test ecx, ecx
jne 0x4026ce
mov edx, dword [ebp - 0x240]
test edx, edx
jne 0x40286a
mov esi, dword [ebp - 0x250]
test esi, esi
jne 0x402970
mov ecx, dword [ebp - 0x244]
test ecx, ecx
jne 0x4029ac
mov edx, dword [ebp - 0x24c]
mov eax, dword [ebp - 0x258]
test edx, edx
jne 0x402ac5
test eax, eax
je 0x4025f3
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseCommit
sub esp, 4
test eax, eax
jne 0x4025c6
mov eax, dword [ebp - 0x258]
xor ebx, ebx
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
sub esp, 4
test eax, eax
jne 0x4021a8
lea eax, [ebp - 0x238]
call fcn.00401060
lea eax, [ebp - 0x230]
call fcn.00401060
lea eax, [ebp - 0x228]
call fcn.00401060
lea eax, [ebp - 0x220]
call fcn.00401060
lea esp, [ebp - 0x10]
mov eax, ebx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
lea eax, [esi + 1]
cmp dword [ebp - 0x27c], eax
jle 0x4020e0
mov edx, dword [ebx + edi + 4]
lea eax, [ebp - 0x230]
mov dword [ebp - 0x250], 1
call fcn.004013d0
mov eax, 2
jmp 0x402350
lea eax, [esi + 1]
cmp dword [ebp - 0x27c], eax
jle 0x4020e0
mov edx, dword [ebx + edi + 4]
lea eax, [ebp - 0x228]
mov dword [ebp - 0x24c], 1
call fcn.004013d0
mov eax, 2
jmp 0x402350
mov dword [ebp - 0x244], 1
mov eax, 1
nop
add esi, eax
cmp dword [ebp - 0x27c], esi
jg 0x402080
jmp 0x402108
mov dword [ebp - 0x23c], 1
mov eax, 1
jmp 0x402350
lea eax, [esi + 1]
cmp dword [ebp - 0x27c], eax
jle 0x4020e0
mov eax, dword [ebx + edi + 4]
mov dword [ebp - 0x25c], eax
mov eax, 2
jmp 0x402350
mov dword [ebp - 0x240], 1
mov eax, 1
jmp 0x402350
lea eax, [esi + 1]
cmp dword [ebp - 0x27c], eax
jle 0x4020e0
mov eax, dword [ebx + edi + 4]
mov dword [ebp - 0x260], eax
mov eax, 2
jmp 0x402350
mov dword [ebp - 0x248], 1
mov eax, 1
jmp 0x402350
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.004010a0
mov dword [esp], 0
call dword [sym.imp.ucrtbase.dll_exit]
lea esi, [esi]
lea edi, [ebp - 0x220]
cmp dword [ebp - 0x220], edi
je 0x4024b4
mov edx, 1
jmp 0x4021f7
mov edx, dword [ebp - 0x254]
or edx, dword [ebp - 0x24c]
or edx, dword [ebp - 0x250]
jne 0x402124
test byte [section..data], 2
je 0x402176
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.00401300
jmp 0x402176
mov edx, dword [ebp - 0x254]
test edx, edx
jne 0x4021f2
mov edx, dword [ebp - 0x24c]
or edx, dword [ebp - 0x250]
je 0x4024d4
jmp 0x4021f2
mov edx, dword [ebx + edi + 4]
lea eax, [ebp - 0x238]
mov dword [ebp - 0x254], 1
call fcn.004013d0
mov eax, 2
jmp 0x402350
mov ecx, dword [ebp - 0x254]
test ecx, ecx
jne 0x402412
mov edx, dword [ebp - 0x24c]
or edx, dword [ebp - 0x250]
jne 0x402412
test byte [section..data], 2
je 0x402182
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.00401300
jmp 0x402182
mov byte [ecx], 0x22
lea eax, [ecx + 1]
test esi, esi
jle 0x402524
mov edi, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], di
mov byte [eax], 0
lea eax, [ebp - 0x218]
mov dword [esp], eax
call fcn.00403820
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_open_database__s._n
mov dword [esp + 8], str.wmain
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401300
mov eax, dword [ebp - 0x258]
test eax, eax
jne 0x402190
lea esi, [esi]
nop
mov ebx, 1
jmp 0x40229c
test byte [section..data], 1
je 0x402182
mov dword [esp + 0xc], str.GUI_operation_is_not_currently_supported._n
mov ebx, 1
mov dword [esp + 8], str.valid_state
mov dword [esp + 4], 0x404000
mov dword [esp], 0
call fcn.00401300
mov eax, dword [ebp - 0x258]
test eax, eax
jne 0x402289
jmp 0x402570
test byte [section..data], 2
je 0x4025f3
mov dword [esp + 0xc], str.Failed_to_commit_changes_to_database._n
mov dword [esp + 8], str.close_database
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401300
xor ebx, ebx
jmp 0x40229c
test byte [section..data], 2
je 0x402182
mov esi, dword [ebp - 0x260]
test esi, esi
je 0x4030bf
mov eax, esi
shr eax, 0x10
je 0x403037
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x402d52
cmp word [esi], 0
je 0x40265a
nop
add edx, 1
cmp word [esi + edx*2], 0
jne 0x402650
mov eax, 0x224c
mov dword [ebp - 0x27c], ebx
lea ecx, [ebp - 0x216]
mov word [ebp - 0x218], ax
lea eax, [ebp - 0xf6]
mov ebx, eax
lea esi, [esi]
lea edi, [edx - 1]
cmp ecx, ebx
ja 0x402d21
test edx, edx
jle 0x402d21
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x402f82
ja 0x402c59
cmp ax, 9
je 0x402f95
cmp ax, 0xa
jne 0x402e89
mov eax, 0x6e5c
add ecx, 2
mov edx, edi
mov word [ecx - 2], ax
jmp 0x402680
mov ebx, dword [ebp - 0x238]
lea eax, [ebp - 0x238]
cmp ebx, eax
je 0x402228
lea edi, [ebp - 0x218]
mov dword [ebp - 0x27c], edi
nop
mov eax, dword [ebp - 0x27c]
mov edi, dword [ebx + 8]
mov dword [esp + 4], str.INSERT_INTO__Streams__Name__Data__VALUES_______
mov dword [ebp - 0x218], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x258]
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseOpenViewW
sub esp, 0xc
test eax, eax
je 0x402750
test byte [section..data], 2
jne 0x4027f0
mov eax, dword [ebp - 0x218]
test eax, eax
je 0x402182
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
sub esp, 4
jmp 0x402182
mov dword [esp], 2
call sub.msi.dll_MsiCreateRecord
sub esp, 4
mov esi, eax
test eax, eax
jne 0x402794
test byte [section..data], 2
je 0x402731
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.00401300
jmp 0x402731
mov dword [esp + 4], 0x2f
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcsrchr]
test eax, eax
je 0x402b41
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov dword [esp], esi
call sub.msi.dll_MsiRecordSetStringW
sub esp, 0xc
test eax, eax
je 0x402819
test byte [section..data], 2
jne 0x402e60
mov dword [esp], esi
call sub.msi.dll_MsiCloseHandle
sub esp, 4
jmp 0x402731
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.00401300
jmp 0x402731
mov dword [esp + 8], edi
mov dword [esp + 4], 2
mov dword [esp], esi
call sub.msi.dll_MsiRecordSetStreamW
sub esp, 0xc
test eax, eax
je 0x402b61
test byte [section..data], 2
je 0x4027d8
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.00401300
jmp 0x4027d8
mov edi, dword [ebp - 0x220]
lea eax, [ebp - 0x220]
cmp edi, eax
je 0x402236
lea esi, [ebp - 0x264]
mov dword [esp + 4], 0x405302
mov eax, dword [edi + 8]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpW]
sub esp, 8
test eax, eax
jne 0x402940
lea eax, [ebp - 0x26c]
mov dword [esp + 4], str.SELECT_Name_FROM__Tables
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x258]
mov dword [ebp - 0x26c], 0
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseOpenViewW
sub esp, 0xc
test eax, eax
je 0x4029c4
test byte [section..data], 2
jne 0x402be2
mov eax, dword [ebp - 0x26c]
test eax, eax
je 0x402182
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
sub esp, 4
test eax, eax
je 0x402182
test byte [section..data], 2
je 0x402182
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.00401300
jmp 0x402182
mov edx, dword [edi + 8]
lea eax, [ebp - 0x260]
call fcn.00401730
test eax, eax
je 0x402182
mov edi, dword [edi]
lea eax, [ebp - 0x220]
cmp edi, eax
jne 0x402884
jmp 0x402236
mov ebx, dword [ebp - 0x230]
lea eax, [ebp - 0x230]
cmp ebx, eax
jne 0x402995
jmp 0x402244
mov ebx, dword [ebx]
lea eax, [ebp - 0x230]
cmp ebx, eax
je 0x402244
mov edx, dword [ebx + 8]
lea eax, [ebp - 0x258]
call fcn.004019e0
test eax, eax
jne 0x402985
jmp 0x402182
lea eax, [ebp - 0x260]
call fcn.004014a0
test eax, eax
jne 0x402252
jmp 0x402182
mov eax, dword [ebp - 0x26c]
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
sub esp, 8
test eax, eax
jne 0x402bac
lea ebx, [ebp - 0x218]
jmp 0x402a59
test eax, eax
jne 0x40307f
mov eax, dword [ebp - 0x268]
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
mov dword [esp + 4], 1
mov dword [esp], eax
mov dword [ebp - 0x264], 0x100
call sub.msi.dll_MsiRecordGetStringW
sub esp, 0x10
test eax, eax
jne 0x4030ff
mov edx, ebx
lea eax, [ebp - 0x260]
call fcn.00401730
test eax, eax
je 0x4028e5
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
sub esp, 4
test eax, eax
jne 0x4030c9
mov dword [ebp - 0x268], 0
lea eax, [ebp - 0x268]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x26c]
mov dword [esp], eax
call sub.msi.dll_MsiViewFetch
sub esp, 8
cmp eax, 0x103
jne 0x4029f0
mov edx, str._SummaryInformation
lea eax, [ebp - 0x260]
call fcn.00401730
test eax, eax
je 0x4028e5
mov eax, dword [ebp - 0x26c]
test eax, eax
je 0x402956
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
push ebx
test eax, eax
je 0x402956
jmp 0x402906
mov esi, dword [ebp - 0x228]
lea edi, [ebp - 0x228]
cmp esi, edi
je 0x402266
lea edi, [ebp - 0x218]
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 - 0x218], 0
call sub.msi.dll_MsiDatabaseOpenViewW
sub esp, 0xc
test eax, eax
je 0x402c24
test byte [section..data], 2
je 0x402731
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.00401300
jmp 0x402731
mov dword [esp + 4], 0x5c
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcsrchr]
lea ecx, [eax + 2]
test eax, eax
mov eax, ecx
cmove eax, edi
jmp 0x4027b0
mov eax, dword [ebp - 0x218]
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
sub esp, 8
test eax, eax
jne 0x403001
mov dword [esp], esi
call sub.msi.dll_MsiCloseHandle
mov eax, dword [ebp - 0x218]
sub esp, 4
test eax, eax
jne 0x40316c
mov ebx, dword [ebx]
lea eax, [ebp - 0x238]
cmp ebx, eax
jne 0x4026f0
jmp 0x402228
test byte [section..data], 2
je 0x4028e5
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.00401300
jmp 0x4028e5
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.00401300
jmp 0x4028e5
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.004010a0
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_exit]
mov dword [esp], 1
call sub.msi.dll_MsiCreateRecord
sub esp, 4
test eax, eax
jne 0x402c80
test byte [section..data], 2
je 0x402731
mov dword [esp + 0xc], str.Failed_to_create_MSI_record._n
mov dword [esp + 8], str.kill_stream
jmp 0x40277e
cmp ax, 0x22
je 0x402fa8
cmp ax, 0x5c
jne 0x402e89
mov eax, 0x5c5c
add ecx, 2
mov edx, edi
mov word [ecx - 2], ax
jmp 0x402680
mov dword [esp + 8], ebx
mov dword [esp + 4], 1
mov dword [esp], eax
mov dword [ebp - 0x27c], eax
call sub.msi.dll_MsiRecordSetStringW
mov edx, dword [ebp - 0x27c]
sub esp, 0xc
test eax, eax
je 0x402cc4
test byte [section..data], 2
jne 0x402fbb
mov dword [esp], edx
call sub.msi.dll_MsiCloseHandle
sub esp, 4
jmp 0x402731
mov eax, dword [ebp - 0x218]
mov dword [esp + 4], edx
mov dword [ebp - 0x27c], edx
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
mov edx, dword [ebp - 0x27c]
sub esp, 8
test eax, eax
jne 0x402fea
mov dword [esp], edx
call sub.msi.dll_MsiCloseHandle
mov eax, dword [ebp - 0x218]
sub esp, 4
test eax, eax
jne 0x40315e
mov esi, dword [esi]
lea ecx, [ebp - 0x228]
mov eax, dword [ebp - 0x258]
cmp esi, ecx
jne 0x402adf
jmp 0x402266
mov ebx, dword [ebp - 0x27c]
mov byte [ecx], 0x22
lea eax, [ecx + 1]
test edi, edi
jle 0x402d41
mov esi, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], si
mov byte [eax], 0
lea eax, [ebp - 0x218]
mov dword [esp], eax
call fcn.00403820
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], 0x4059f8
mov dword [esp + 4], 0x404000
mov dword [esp], 1
call fcn.00401300
test byte [section..data], 2
je 0x402182
mov ebx, dword [ebp - 0x260]
test ebx, ebx
je 0x4030b5
mov eax, ebx
shr eax, 0x10
je 0x40304f
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x402535
cmp word [ebx], 0
je 0x402dda
lea esi, [esi]
add edx, 1
cmp word [ebx + edx*2], 0
jne 0x402dd0
mov eax, 0x224c
lea ecx, [ebp - 0x216]
lea edi, [ebp - 0xf6]
mov word [ebp - 0x218], ax
lea esi, [edx - 1]
cmp ecx, edi
ja 0x40250a
test edx, edx
jle 0x40250a
add ebx, 2
movzx eax, word [ebx - 2]
cmp ax, 0xd
je 0x402f6f
ja 0x402e3c
cmp ax, 9
je 0x402f5c
cmp ax, 0xa
jne 0x402ee9
mov eax, 0x6e5c
add ecx, 2
mov edx, esi
mov word [ecx - 2], ax
jmp 0x402df2
cmp ax, 0x22
je 0x402f49
cmp ax, 0x5c
jne 0x402ee9
mov eax, 0x5c5c
add ecx, 2
mov edx, esi
mov word [ecx - 2], ax
jmp 0x402df2
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.00401300
jmp 0x4027d8
lea edx, [eax - 0x20]
cmp dx, 0x5e
jbe 0x403067
mov edx, eax
mov byte [ecx], 0x5c
add ecx, 5
shr dx, 0xc
movzx edx, dx
movzx edx, byte [edx + str.0123456789abcdefopen_database]
mov byte [ecx - 4], dl
mov edx, eax
shr dx, 8
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefopen_database]
mov byte [ecx - 3], dl
mov edx, eax
and eax, 0xf
shr dx, 4
movzx eax, byte [eax + str.0123456789abcdefopen_database]
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefopen_database]
mov byte [ecx - 1], al
mov byte [ecx - 2], dl
mov edx, edi
jmp 0x402680
lea edx, [eax - 0x20]
cmp dx, 0x5e
jbe 0x403073
mov edx, eax
mov byte [ecx], 0x5c
add ecx, 5
shr dx, 0xc
movzx edx, dx
movzx edx, byte [edx + str.0123456789abcdefopen_database]
mov byte [ecx - 4], dl
mov edx, eax
shr dx, 8
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefopen_database]
mov byte [ecx - 3], dl
mov edx, eax
and eax, 0xf
shr dx, 4
movzx eax, byte [eax + str.0123456789abcdefopen_database]
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefopen_database]
mov byte [ecx - 1], al
mov byte [ecx - 2], dl
mov edx, esi
jmp 0x402df2
mov eax, 0x225c
add ecx, 2
mov edx, esi
mov word [ecx - 2], ax
jmp 0x402df2
mov eax, reloc.shlwapi.dll_PathAddBackslashW
add ecx, 2
mov edx, esi
mov word [ecx - 2], ax
jmp 0x402df2
mov eax, CreateFileW
add ecx, 2
mov edx, esi
mov word [ecx - 2], ax
jmp 0x402df2
mov eax, CreateFileW
add ecx, 2
mov edx, edi
mov word [ecx - 2], ax
jmp 0x402680
mov eax, reloc.shlwapi.dll_PathAddBackslashW
add ecx, 2
mov edx, edi
mov word [ecx - 2], ax
jmp 0x402680
mov eax, 0x225c
add ecx, 2
mov edx, edi
mov word [ecx - 2], ax
jmp 0x402680
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.00401300
mov edx, dword [ebp - 0x27c]
jmp 0x402cb4
test byte [section..data], 2
je 0x402cb4
mov dword [esp + 0xc], str.Failed_to_delete_stream_from__Streams_table._n
jmp 0x402fc3
test byte [section..data], 2
je 0x4027d8
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.00401300
jmp 0x4027d8
movzx esi, si
mov dword [esp], str._04x
mov dword [esp + 4], esi
call fcn.004010c0
jmp 0x402d52
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call fcn.004010c0
jmp 0x402535
mov byte [ecx], al
mov edx, edi
add ecx, 1
jmp 0x402680
mov byte [ecx], al
mov edx, esi
add ecx, 1
jmp 0x402df2
test byte [section..data], 2
je 0x4028e5
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.00401300
jmp 0x4028e5
mov eax, str._null_
jmp 0x402535
mov eax, str._null_
jmp 0x402d52
test byte [section..data], 2
je 0x4028e5
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.00401300
jmp 0x4028e5
test byte [section..data], 2
je 0x4028e5
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.00401300
jmp 0x4028e5
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.00401300
jmp 0x402176
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
push eax
jmp 0x402d06
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
push esi
jmp 0x402b97