Function at 0x46d10f
Capabilities:
Read file on windows

Disassembly:
push 0x90
mov eax, 0x47180c
call fcn.0046fbd6
mov ebx, dword [ebp + 8]
xor esi, esi
mov dword [ebp - 0x20], esi
cmp dword [ebx + 0x14c], 0xffffffff
jne 0x46d17a
lea eax, [ebx + 0x120]
cmp dword [eax + 0x18], 0x10
jb 0x46d140
mov eax, dword [eax + 4]
jmp 0x46d143
add eax, 4
movzx ecx, byte [ebx + 0x13e]
push ecx
movzx ecx, word [ebx + 0x13c]
push dword [ebx + 0x1d0]
push ecx
push ebx
mov ecx, eax
call fcn.0046bb38
test al, al
jne 0x46d17a
mov dword [ebp - 0x54], 0x6a
push 0x49ab24
lea eax, [ebp - 0x54]
push eax
call sub.MSVCR90.dll__CxxThrowException
push 0x37
mov dword [ebp - 4], esi
call sub.mfc90.dll_Ordinal_265
pop ecx
mov dword [ebp - 0x30], eax
cmp eax, esi
jne 0x46d19d
mov dword [ebp - 0x38], 0x198
push 0x49ab24
lea eax, [ebp - 0x38]
jmp 0x46d174
push 0xff
call sub.mfc90.dll_Ordinal_265
pop ecx
mov dword [ebp - 0x28], eax
cmp eax, esi
jne 0x46d1c0
mov dword [ebp - 0x44], 0x198
push 0x49ab24
lea eax, [ebp - 0x44]
jmp 0x46d174
mov edi, dword [sym.imp.MSVCR90.dll_sprintf_s]
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x1c], esi
lea esi, [ebx + 0x19c]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
push 0x1c
cdq
pop ecx
idiv ecx
cmp dword [ebp - 0x1c], eax
jae 0x46d28c
push dword [ebp - 0x1c]
call fcn.0040194b
cmp dword [eax + 0x18], 0x10
jb 0x46d1fa
mov eax, dword [eax + 4]
jmp 0x46d1fd
add eax, 4
push eax
push 0xff
push dword [ebp - 0x28]
call edi
add esp, 0xc
push 0x4957a4
push dword [ebp - 0x28]
call dword [sym.imp.MSVCR90.dll_fopen]
mov esi, eax
pop ecx
pop ecx
test esi, esi
jne 0x46d235
mov dword [ebp - 0x60], 0x194
push 0x49ab24
lea eax, [ebp - 0x60]
jmp 0x46d174
and dword [ebp - 0x24], 0
push esi
call dword [sym.imp.MSVCR90.dll_feof]
pop ecx
test eax, eax
jne 0x46d25b
push esi
push 0x36
push 1
push dword [ebp - 0x30]
call dword [sym.imp.MSVCR90.dll_fread]
add esp, 0x10
add dword [ebp - 0x24], eax
jmp 0x46d239
mov eax, dword [ebp - 0x24]
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
and eax, 0xfffffc00
cmp eax, 0x500000
jbe 0x46d284
mov dword [ebp - 0x4c], 0x195
push 0x49ab24
lea eax, [ebp - 0x4c]
jmp 0x46d174
inc dword [ebp - 0x1c]
jmp 0x46d1cc
cmp dword [ebx + 0x34], 0
jne 0x46d2a6
mov dword [ebp - 0x5c], 0xc9
push 0x49ab24
lea eax, [ebp - 0x5c]
jmp 0x46d174
push 9
call fcn.00469d8d
cmp dword [ebx + 0x38], 0x10
pop ecx
mov dword [ebp - 0x14], eax
jb 0x46d2bc
mov eax, dword [ebx + 0x24]
jmp 0x46d2bf
lea eax, [ebx + 0x24]
push eax
push str.MAIL_FROM:__s__r_n
mov esi, 0x2800
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push dword [ebp - 0x14]
push ebx
call fcn.0046b1fd
mov eax, dword [ebx + 0x164]
sub eax, dword [ebx + 0x160]
push 0x38
cdq
pop ecx
idiv ecx
test eax, eax
jne 0x46d313
mov dword [ebp - 0x3c], 0xcb
push 0x49ab24
lea eax, [ebp - 0x3c]
jmp 0x46d174
push 0xa
call fcn.00469d8d
and dword [ebp - 0x18], 0
pop ecx
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x164]
sub eax, dword [ebx + 0x160]
push 0x38
cdq
pop ecx
idiv ecx
cmp dword [ebp - 0x18], eax
jae 0x46d37f
push dword [ebp - 0x18]
lea eax, [ebx + 0x154]
call fcn.0040171d
cmp dword [eax + 0x34], 0x10
jb 0x46d352
mov eax, dword [eax + 0x20]
jmp 0x46d355
add eax, 0x20
push eax
push str.RCPT_TO:__s__r_n
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push dword [ebp - 0x14]
push ebx
call fcn.0046b1fd
inc dword [ebp - 0x18]
jmp 0x46d322
and dword [ebp - 0x18], 0
mov eax, dword [ebx + 0x17c]
sub eax, dword [ebx + 0x178]
push 0x38
cdq
pop ecx
idiv ecx
cmp dword [ebp - 0x18], eax
jae 0x46d3e0
push dword [ebp - 0x18]
lea eax, [ebx + 0x16c]
call fcn.0040171d
cmp dword [eax + 0x34], 0x10
jb 0x46d3b3
mov eax, dword [eax + 0x20]
jmp 0x46d3b6
add eax, 0x20
push eax
push str.RCPT_TO:__s__r_n
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push dword [ebp - 0x14]
push ebx
call fcn.0046b1fd
inc dword [ebp - 0x18]
jmp 0x46d383
and dword [ebp - 0x18], 0
mov eax, dword [ebx + 0x194]
sub eax, dword [ebx + 0x190]
push 0x38
cdq
pop ecx
idiv ecx
cmp dword [ebp - 0x18], eax
jae 0x46d441
push dword [ebp - 0x18]
lea eax, [ebx + 0x184]
call fcn.0040171d
cmp dword [eax + 0x34], 0x10
jb 0x46d414
mov eax, dword [eax + 0x20]
jmp 0x46d417
add eax, 0x20
push eax
push str.RCPT_TO:__s__r_n
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push dword [ebp - 0x14]
push ebx
call fcn.0046b1fd
inc dword [ebp - 0x18]
jmp 0x46d3e4
push 0xb
call fcn.00469d8d
mov dword [esp], str.DATA_r_n
push esi
push dword [ebx + 0x144]
mov dword [ebp - 0x14], eax
call edi
add esp, 0xc
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push dword [ebp - 0x14]
push ebx
call fcn.0046b1fd
push 0xc
call fcn.00469d8d
pop ecx
push dword [ebx + 0x144]
mov ecx, ebx
mov dword [ebp - 0x14], eax
call fcn.0046a785
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
mov eax, dword [ebx + 0x1c4]
sub eax, dword [ebx + 0x1c0]
push 0x1c
cdq
pop ecx
idiv ecx
test eax, eax
je 0x46d4ef
and dword [ebp - 0x18], 0
mov eax, dword [ebx + 0x1c4]
sub eax, dword [ebx + 0x1c0]
push 0x1c
cdq
pop ecx
idiv ecx
cmp dword [ebp - 0x18], eax
jae 0x46d50f
push dword [ebp - 0x18]
mov ecx, ebx
call fcn.0046b4e3
push eax
push str._s_r_n
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
inc dword [ebp - 0x18]
jmp 0x46d4ad
push 0x4963ac
push str._s_r_n
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
and dword [ebp - 0x2c], 0
and dword [ebp - 0x1c], 0
mov eax, dword [ebx + 0x1ac]
sub eax, dword [ebx + 0x1a8]
push 0x1c
cdq
pop ecx
idiv ecx
cmp dword [ebp - 0x1c], eax
jae 0x46d886
push dword [ebp - 0x1c]
lea esi, [ebx + 0x19c]
call fcn.0040194b
cmp dword [eax + 0x18], 0x10
jb 0x46d54b
mov eax, dword [eax + 4]
jmp 0x46d54e
add eax, 4
push eax
push 0xff
push dword [ebp - 0x28]
call edi
add esp, 0xc
push str.__MESSAGE__ID__54yg6f6h6y456345
push str.___s_r_n
push 0x2800
push dword [ebx + 0x144]
call edi
mov edi, dword [ebx + 0x144]
add esp, 0x10
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d57d
mov eax, dword [sym.imp.MSVCP90.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
push 0xb
pop ecx
mov esi, str.Content_Type:_application_x_msdownload__name_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
push dword [eax]
lea esi, [ebx + 0x19c]
push 0x4963e8
push dword [ebp - 0x1c]
call fcn.0040194b
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_last_of_char_const___unsigned_int_const]
mov ecx, dword [ebp - 0x28]
lea eax, [eax + ecx + 1]
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46d5bd
mov edi, dword [ebx + 0x144]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d5cd
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebx + 0x144]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d5ea
mov esi, 0x4963ec
movsd dword es:[edi], dword [esi]
mov edi, dword [ebx + 0x144]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d5ff
push 9
pop ecx
mov esi, str.Content_Transfer_Encoding:_base64_r_n
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebx + 0x144]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d618
mov eax, dword [sym.imp.MSVCP90.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
push 0xb
pop ecx
mov esi, str.Content_Disposition:_attachment__filename_
rep movsd dword es:[edi], dword [esi]
push dword [eax]
lea esi, [ebx + 0x19c]
push 0x4963e8
push dword [ebp - 0x1c]
call fcn.0040194b
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_last_of_char_const___unsigned_int_const]
mov ecx, dword [ebp - 0x28]
lea eax, [eax + ecx + 1]
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46d655
mov edi, dword [ebx + 0x144]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d665
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebx + 0x144]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d682
mov esi, 0x4963ec
movsd dword es:[edi], dword [esi]
mov edi, dword [ebx + 0x144]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d697
push dword [ebp - 0x14]
mov esi, 0x496440
movsw word es:[edi], word [esi]
mov eax, ebx
movsb byte es:[edi], byte [esi]
call fcn.0046a32e
push 0x4957a4
push dword [ebp - 0x28]
call dword [sym.imp.MSVCR90.dll_fopen]
mov esi, eax
xor edi, edi
pop ecx
pop ecx
mov dword [ebp - 0x58], esi
cmp esi, edi
jne 0x46d6e0
mov dword [ebp - 0x40], 0x194
push 0x49ab24
lea eax, [ebp - 0x40]
jmp 0x46d174
mov dword [ebp - 0x24], edi
push esi
call dword [sym.imp.MSVCR90.dll_feof]
pop ecx
test eax, eax
jne 0x46d705
push esi
push 0x36
push 1
push dword [ebp - 0x30]
call dword [sym.imp.MSVCR90.dll_fread]
add esp, 0x10
add dword [ebp - 0x24], eax
jmp 0x46d6e3
mov eax, dword [ebp - 0x24]
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
and eax, 0xfffffc00
cmp eax, 0x500000
jbe 0x46d72e
mov dword [ebp - 0x48], 0x195
push 0x49ab24
lea eax, [ebp - 0x48]
jmp 0x46d174
push edi
push edi
push esi
call dword [sym.imp.MSVCR90.dll_fseek]
add esp, 0xc
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x18], edi
mov eax, dword [ebp - 0x24]
xor edx, edx
push 0x36
pop ecx
div ecx
inc eax
cmp dword [ebp - 0x18], eax
jae 0x46d85c
push esi
push ecx
push 1
push dword [ebp - 0x30]
call dword [sym.imp.MSVCR90.dll_fread]
mov edx, dword [ebp - 0x30]
add esp, 0x10
mov dword [ebp - 0x50], eax
push eax
cmp dword [ebp - 0x34], edi
je 0x46d7be
lea ecx, [ebp - 0x98]
call fcn.0046d917
pop ecx
mov byte [ebp - 4], 1
or dword [ebp - 0x20], 1
cmp dword [eax + 0x18], 0x10
jb 0x46d78f
mov eax, dword [eax + 4]
jmp 0x46d792
add eax, 4
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46d794
mov edi, dword [ebx + 0x144]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d7a4
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x46d7e9
lea ecx, [ebp - 0x7c]
call fcn.0046d917
or dword [ebp - 0x20], 2
cmp dword [eax + 0x18], 0x10
pop ecx
jb 0x46d7d6
mov ecx, dword [eax + 4]
jmp 0x46d7d9
lea ecx, [eax + 4]
mov edx, dword [ebx + 0x144]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x46d7df
test byte [ebp - 0x20], 2
je 0x46d7fc
and dword [ebp - 0x20], 0xfffffffd
lea ecx, [ebp - 0x7c]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
and dword [ebp - 4], 0
test byte [ebp - 0x20], 1
je 0x46d816
and dword [ebp - 0x20], 0xfffffffe
lea ecx, [ebp - 0x98]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov edi, dword [ebx + 0x144]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x46d81d
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x50]
mov esi, 0x496440
movsw word es:[edi], word [esi]
lea eax, [eax + ecx + 2]
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x34], eax
cmp eax, 0x1400
jb 0x46d84f
push dword [ebp - 0x14]
and dword [ebp - 0x34], 0
mov eax, ebx
call fcn.0046a32e
inc dword [ebp - 0x18]
mov esi, dword [ebp - 0x58]
xor edi, edi
jmp 0x46d740
cmp dword [ebp - 0x34], edi
je 0x46d86b
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push esi
call dword [sym.imp.MSVCR90.dll_fclose]
inc dword [ebp - 0x1c]
mov edi, dword [sym.imp.MSVCR90.dll_sprintf_s]
pop ecx
mov esi, 0x2800
jmp 0x46d517
push dword [ebp - 0x30]
call sub.mfc90.dll_Ordinal_266
pop ecx
push dword [ebp - 0x28]
call sub.mfc90.dll_Ordinal_266
mov eax, dword [ebx + 0x1ac]
sub eax, dword [ebx + 0x1a8]
pop ecx
push 0x1c
cdq
pop ecx
idiv ecx
test eax, eax
je 0x46d8ce
push str.__MESSAGE__ID__54yg6f6h6y456345
push str._r_n___s___r_n
push esi
push dword [ebx + 0x144]
call edi
add esp, 0x10
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push 0xd
call fcn.00469d8d
mov dword [esp], str._r_n._r_n
push esi
push dword [ebx + 0x144]
mov dword [ebp - 0x14], eax
call edi
add esp, 0xc
push dword [ebp - 0x14]
mov eax, ebx
call fcn.0046a32e
push dword [ebp - 0x14]
push ebx
call fcn.0046b1fd
call fcn.0046fc7b
ret 4