Function at 0x403790
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xac
mov eax, dword [0x45c014]
xor eax, esp
mov dword [esp + 0xa8], eax
push ebx
push esi
push edi
mov ebx, ecx
mov dword [esp + 0x2c], 0
push 0xa
push str.mapi32.dll
lea ecx, [esp + 0x24]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x38], 0xf
mov byte [esp + 0x24], 0
call fcn.00408cd0
mov edi, dword [esp + 0x2c]
lea eax, [esp + 0x1c]
push 0
push 0
inc edi
cmp dword [esp + 0x38], 0x10
push edi
cmovae eax, dword [esp + 0x28]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor ecx, ecx
mov esi, eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00422cd7
add esp, 4
lea ecx, [esp + 0x1c]
cmp dword [esp + 0x30], 0x10
cmovae ecx, dword [esp + 0x1c]
push esi
mov esi, eax
push esi
push edi
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, esi
mov dword [esp + 0x4c], 0
xor eax, eax
mov dword [esp + 0x50], 7
mov word [esp + 0x3c], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403850
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [esp + 0x44]
call fcn.00408980
push esi
call fcn.00422a5e
add esp, 4
lea eax, [esp + 0x3c]
cmp dword [esp + 0x50], 8
cmovae eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edx, dword [esp + 0x50]
mov esi, eax
mov dword [esp + 0x38], esi
cmp edx, 8
jb 0x4038ca
mov ecx, dword [esp + 0x3c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4038c0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404186
push edx
push ecx
call fcn.00422a20
add esp, 8
mov edx, dword [esp + 0x30]
xor eax, eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 7
mov word [esp + 0x3c], ax
cmp edx, 0x10
jb 0x403917
mov ecx, dword [esp + 0x1c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40390d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404186
push edx
push ecx
call fcn.00422a20
add esp, 8
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0xf
mov byte [esp + 0x1c], 0
test esi, esi
je 0x4040a6
push str.MAPISendMailW
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x30
mov dword [esp + 0x38], eax
lea eax, [esp + 0x58]
push 0
push eax
call fcn.004244d0
add esp, 0xc
cmp dword [ebp + 0x3c], 0
je 0x4039a7
cmp dword [ebp + 0x40], 8
lea edx, [ebp + 0x2c]
cmovae edx, dword [ebp + 0x2c]
sub esp, 0x18
mov esi, esp
mov ecx, edx
xor eax, eax
mov dword [esi + 0x10], 0
lea edi, [ecx + 2]
mov dword [esi + 0x14], 7
mov word [esi], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403983
sub ecx, edi
sar ecx, 1
push ecx
push edx
mov ecx, esi
call fcn.00408980
call fcn.00402f80
add esp, 0x18
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 8]
xor edi, edi
mov ecx, dword [ebp + 0xc]
cmp eax, ecx
je 0x4039c6
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov edi, edx
shr edi, 0x1f
add edi, edx
mov eax, dword [ebp + 0x14]
xor ecx, ecx
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x14], ecx
cmp eax, edx
je 0x4039ed
sub edx, eax
mov eax, 0x2aaaaaab
imul edx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0x14], ecx
mov esi, dword [ebp + 0x20]
xor eax, eax
mov edx, dword [ebp + 0x24]
mov dword [esp + 0x10], eax
cmp esi, edx
je 0x403a14
sub edx, esi
mov eax, 0x2aaaaaab
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x10], eax
add eax, ecx
mov edx, 0x18
add eax, edi
mov dword [esp + 0xc], eax
je 0x403be0
xor ecx, ecx
mov dword [esp + 0x74], 0
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004272d9
mov esi, eax
add esp, 4
mov eax, dword [esp + 0xc]
lea ecx, [eax + eax*2]
shl ecx, 3
push ecx
push 0
push esi
call fcn.004244d0
add esp, 0xc
test edi, edi
jle 0x403ab6
xor ebx, ebx
mov eax, dword [ebp + 8]
sub esp, 0x18
add eax, ebx
mov ecx, esp
push eax
call fcn.004079a0
call fcn.00402f80
mov ecx, dword [ebp + 8]
add esp, 0x18
mov edx, eax
cmp dword [ecx + ebx + 0x10], 0
je 0x403aae
mov ecx, dword [esp + 0x74]
lea ecx, [ecx + ecx*2]
mov dword [esi + ecx*8 + 8], edx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 0xc], edx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 4], 1
inc dword [esp + 0x74]
add ebx, 0x18
sub edi, 1
jne 0x403a61
xor ebx, ebx
cmp dword [esp + 0x14], ebx
jle 0x403b79
xor edi, edi
mov eax, dword [ebp + 0x14]
sub esp, 0x18
add eax, edi
mov ecx, esp
push eax
call fcn.004079a0
call fcn.00402f80
mov ecx, dword [ebp + 0x14]
add esp, 0x18
add ecx, edi
mov dword [esp + 0xc], eax
push ecx
lea ecx, [esp + 0x88]
call fcn.004079a0
mov ecx, dword [ebp + 0x14]
cmp dword [ecx + edi + 0x10], 0
je 0x403b29
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0xc]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 8], ecx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 0xc], ecx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 4], 2
inc dword [esp + 0x74]
mov edx, dword [esp + 0x98]
cmp edx, 8
jb 0x403b6b
mov ecx, dword [esp + 0x84]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x403b61
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404186
push edx
push ecx
call fcn.00422a20
add esp, 8
inc ebx
add edi, 0x18
cmp ebx, dword [esp + 0x14]
jl 0x403ac4
mov ebx, dword [esp + 0x10]
test ebx, ebx
jle 0x403bd8
xor edi, edi
mov eax, dword [ebp + 0x20]
sub esp, 0x18
add eax, edi
mov ecx, esp
push eax
call fcn.004079a0
call fcn.00402f80
mov ecx, dword [ebp + 0x20]
add esp, 0x18
mov edx, eax
cmp dword [ecx + edi + 0x10], 0
je 0x403bd0
mov ecx, dword [esp + 0x74]
lea ecx, [ecx + ecx*2]
mov dword [esi + ecx*8 + 8], edx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 0xc], edx
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 4], 3
inc dword [esp + 0x74]
add edi, 0x18
sub ebx, 1
jne 0x403b83
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x78], esi
cmp dword [ebp + 0x54], 0
je 0x403c05
sub esp, 0x18
lea eax, [ebp + 0x44]
mov ecx, esp
push eax
call fcn.004079a0
call fcn.00402f80
add esp, 0x18
mov dword [esp + 0x5c], eax
jmp 0x403cfc
push 1
push 0x4562c0
lea ecx, [esp + 0x8c]
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0xf
mov byte [esp + 0x8c], 0
call fcn.00408cd0
cmp dword [esp + 0x98], 0x10
lea eax, [esp + 0x84]
push 0
cmovae eax, dword [esp + 0x88]
push 0
push dword [esp + 0x9c]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
test edi, edi
jne 0x403c6d
xor esi, esi
jmp 0x403cbc
xor ecx, ecx
lea eax, [edi + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00422cd7
add esp, 4
lea ecx, [esp + 0x84]
cmp dword [esp + 0x98], 0x10
mov esi, eax
cmovae ecx, dword [esp + 0x84]
push edi
push esi
push dword [esp + 0x9c]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor eax, eax
mov word [esi + edi*2], ax
mov edx, dword [esp + 0x98]
mov dword [esp + 0x5c], esi
cmp edx, 0x10
jb 0x403cfc
mov ecx, dword [esp + 0x84]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403cf2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40418b
push edx
push ecx
call fcn.00422a20
add esp, 8
mov edx, dword [ebp + 0x5c]
mov ecx, dword [ebp + 0x60]
cmp edx, ecx
je 0x403db4
sub ecx, edx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov edi, edx
shr edi, 0x1f
add edi, edx
test edi, edi
jle 0x403db4
xor ecx, ecx
mov dword [esp + 0x7c], 0
mov eax, edi
mov edx, 0x18
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004272d9
add esp, 4
mov dword [esp + 0xc], eax
test eax, eax
je 0x403db4
lea ecx, [edi + edi*2]
mov ebx, eax
shl ecx, 3
push ecx
push 0
push ebx
call fcn.004244d0
mov eax, dword [ebp + 0x5c]
add esp, 0xc
xor esi, esi
nop dword [eax]
sub esp, 0x18
add eax, esi
mov ecx, esp
push eax
call fcn.004079a0
call fcn.00402f80
mov ecx, eax
add esp, 0x18
mov eax, dword [ebp + 0x5c]
cmp dword [esi + eax + 0x10], 0
je 0x403da1
inc dword [esp + 0x7c]
mov dword [esi + ebx + 0xc], ecx
mov dword [esi + ebx + 8], 0xffffffff
add esi, 0x18
sub edi, 1
jne 0x403d70
mov dword [esp + 0x80], ebx
mov ebx, dword [esp + 0x18]
push 0
push 9
lea eax, [esp + 0x5c]
push eax
push 0
push 0
call dword [esp + 0x48]
test eax, eax
je case.0x403de0.1
lea ecx, [eax - 1]
cmp ecx, 0x18
ja case.0x403de0.4
movzx edx, byte [ecx + 0x4041d4]
jmp dword [edx*4 + 0x40419c]
mov edx, str.A_recipient_matched_more_than_one_of_the_recipient_descriptor_structures.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.A_recipient_matched_more_than_one_of_the_recipient_descriptor_structures.
jmp 0x404090
mov edx, str.The_specified_attachment_was_not_found.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.The_specified_attachment_was_not_found.
jmp 0x404090
mov edx, str.The_specified_attachment_could_not_be_opened.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.The_specified_attachment_could_not_be_opened.
jmp 0x404090
mov edx, str.The_type_of_a_recipient_was_not_MAPI_TO__MAPI_CC__or_MAPI_BCC.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.The_type_of_a_recipient_was_not_MAPI_TO__MAPI_CC__or_MAPI_BCC.
jmp 0x404090
mov edx, str.One_or_more_unspecified_errors_occurred.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.One_or_more_unspecified_errors_occurred.
jmp 0x404090
mov edx, str.There_was_insufficient_memory_to_proceed.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.There_was_insufficient_memory_to_proceed.
jmp 0x404090
mov edx, str.One_or_more_recipients_were_invalid_or_did_not_resolve_to_any_address.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.One_or_more_recipients_were_invalid_or_did_not_resolve_to_any_address.
jmp 0x404090
mov edx, str.There_was_no_default_logon__and_the_user_failed_to_log_on_successfully.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.There_was_no_default_logon__and_the_user_failed_to_log_on_successfully.
jmp 0x404090
mov edx, str.The_text_in_the_message_was_too_large.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.The_text_in_the_message_was_too_large.
jmp 0x404090
mov edx, str.There_were_too_many_file_attachments.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.There_were_too_many_file_attachments.
jmp 0x404090
mov edx, str.There_were_too_many_recipients.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.There_were_too_many_recipients.
jmp 0x404090
mov edx, str.A_recipient_did_not_appear_in_the_address_list.
mov ecx, ebx
call fcn.004034f0
push 0
push 0x4562c4
push str.A_recipient_did_not_appear_in_the_address_list.
jmp 0x404090
push eax
lea eax, [esp + 0xa0]
push str.One_or_more_undefined_errors_occurred:__d
push eax
call fcn.0040a2f0
lea ecx, [esp + 0xa8]
mov dword [esp + 0xa0], 0
add esp, 0xc
mov dword [esp + 0x98], 0xf
mov byte [esp + 0x84], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403f81
sub ecx, edx
lea eax, [esp + 0x9c]
push ecx
push eax
lea ecx, [esp + 0x8c]
call fcn.00408cd0
cmp dword [esp + 0x98], 0x10
lea eax, [esp + 0x84]
push 0
cmovae eax, dword [esp + 0x88]
push 0
push dword [esp + 0x9c]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
test edi, edi
jne 0x403fd6
xor esi, esi
jmp 0x404025
xor ecx, ecx
lea eax, [edi + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00422cd7
add esp, 4
lea ecx, [esp + 0x84]
cmp dword [esp + 0x98], 0x10
mov esi, eax
cmovae ecx, dword [esp + 0x84]
push edi
push esi
push dword [esp + 0x9c]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor eax, eax
mov word [esi + edi*2], ax
mov edx, dword [esp + 0x98]
cmp edx, 0x10
jb 0x404061
mov ecx, dword [esp + 0x84]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x404057
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404190
push edx
push ecx
call fcn.00422a20
add esp, 8
mov edx, esi
mov dword [esp + 0x94], 0
mov ecx, ebx
mov dword [esp + 0x98], 0xf
mov byte [esp + 0x84], 0
call fcn.004034f0
push 0
push 0x4562c4
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push dword [esp + 0x38]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor esi, esi
jmp 0x4040b7
mov edx, str.hlibMAPI_load_failed
mov ecx, ebx
call fcn.004030d0
mov esi, 0xfffffffe
lea ecx, [ebp + 8]
call fcn.004082f0
lea ecx, [ebp + 0x14]
call fcn.004082f0
lea ecx, [ebp + 0x20]
call fcn.004082f0
mov edx, dword [ebp + 0x40]
cmp edx, 8
jb 0x404109
mov ecx, dword [ebp + 0x2c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4040ff
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404195
push edx
push ecx
call fcn.00422a20
add esp, 8
mov edx, dword [ebp + 0x58]
xor eax, eax
mov dword [ebp + 0x3c], 0
mov dword [ebp + 0x40], 7
mov word [ebp + 0x2c], ax
cmp edx, 8
jb 0x404153
mov ecx, dword [ebp + 0x44]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x404149
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404195
push edx
push ecx
call fcn.00422a20
add esp, 8
xor eax, eax
mov dword [ebp + 0x54], 0
lea ecx, [ebp + 0x5c]
mov dword [ebp + 0x58], 7
mov word [ebp + 0x44], ax
call fcn.004082f0
mov ecx, dword [esp + 0xb4]
mov eax, esi
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00422a0f
mov esp, ebp
pop ebp
ret
call fcn.004274a0
call fcn.004274a0
call fcn.004274a0
call fcn.004274a0
nop
cwde
inc eax
inc eax
add byte [ebx + 0x3e], bl
inc eax
add byte [edx + 0x7800403e], dh
inc eax
add ah, ch
inc eax
add byte [ecx], cl
aas
inc eax
add byte [esi + edi], al
inc eax
add byte [ecx], ah
inc eax
add byte [esi], ah
aas
inc eax
add byte [esi], bh
inc eax
add bh, cl
inc eax
add bh, ah
cmp eax, 0x3e950040
inc eax
add byte [ebx + 0x3f], al
inc eax
add byte [eax], al
add dword [edx], eax
or eax, 218959107
add al, 5
push es
pop es
or eax, 218958088
or cl, byte [218958605]
or eax, -858993652