; ͻ

;  This file is generated by The Interactive Disassembler (IDA)    

;  Copyright (c) 1998 by DataRescue sa/nv, <ida@datarescue.com>    

; ͼ



:0048C0E0 55				push    ebp;Protocolo de llamada a funciones.

:0048C0E1 8B EC				mov     ebp, esp

:0048C0E3 83 EC 10			sub     esp, 10h;16 bytes de pila para variables locales

:0048C0E6 50				push    eax;Guardamos los registros.

:0048C0E7 53				push    ebx

:0048C0E8 51				push    ecx

:0048C0E9 52				push    edx

:0048C0EA 57				push    edi

:0048C0EB 56				push    esi

:0048C0EC BE 40 c1 48 00		mov     esi, 48C140h;1 parametro.Zona de datos

:0048C0F1 8D 86 C8 00 00 00		lea     eax, [esi+0C8h];Direccion en la zona de datos para el 2 parametro

:0048C0F7 BF 1A 77 F7 BF		mov     edi, 0BFF7771Ah;2 parametro.Direccin de GetmodulehandleA

:0048C0FC 89 38				mov     [eax], edi;Guardamos el 2 parametro en la zona de datos.

:0048C0FE 8D 86 CC 00 00 00		lea     eax, [esi+0CCh];Direccion en la zona de datos para el 3 parametro

:0048F104 BF AC 6D F7 BF		mov     edi, 0BFF76DACh;3 parametro.Direccin de GetProcAddress

:0048F109 89 38				mov     [eax], edi;Guardamos el 3 parametro en la zona de datos.

:0048F10B 8D 86 2B 00 00 00		lea     eax, [esi+2Bh];Cadena:Comdlg32

:0048F111 50				push    eax;Cadena:Comdlg32

:0048F112 FF 96 C8 00 00 00		call    dword ptr [esi+0C8h];Calculamos el handle de Comdlg32

:0048F118 8D 5E 34			lea     ebx, [esi+34h];Cadena:GetSaveFileNameA

:0048F11B 53				push    ebx;Cadena:GetSaveFileNameA

:0048F11C 50				push    eax;handle de Comdlg32

:0048F11D FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direccin de GetSaveFileNameA

:0048F123 8B D8				mov     ebx, eax;Guardamos la direccin del GetSaveFileNameA

:0048F125 6A 00				push    0;Handle del fichero que lanz la aplicacin.

:0048F127 FF 96 C8 00 00 00		call    dword ptr [esi+0C8h];Calculamos el handle de la aplicacin.

:0048F12D 8B D0				mov     edx, eax;Guardamos el handle de la aplicacin

:0048F12F 8D 7E 77			lea     edi, [esi+77h];Direccin de inicio de la estructura de GetSaveFileNameA

:0048F132 B9 4C 00 00 00		mov     ecx, 4Ch;Tamao de la estructura.

:0048F137 31 C0				xor     eax, eax;Reseteamos la estructura con 0.

:0048F139 F3 AA				repe stosb;Escribimos los ceros.

:0048F13B 8D 7E 77			lea     edi, [esi+77h];Direccin de inicio de la estructura de GetSaveFileNameA

:0048F13E C7 07 4C 00 00 00		mov     dword ptr [edi],4Ch;Guardamos en la estructura su tamao

:0048F144 89 57 08			mov     [edi+8],edx;Guardamos en la estructura handle de la aplicacin

:0048F147 8D 46 56			lea     eax, [esi+56h];lpstrCustomFilter

:0048F14A 8D 4F 01			lea     ecx, [edi+1];Direccion para almacenar el nombre del fichero a salvar

:0048F14D 8D 56 45			lea     edx, [esi+45h];lpstrTitle

:0048F150 89 47 0C			mov     [edi+0Ch], eax;Guardamos en la estructura lpstrCustomFilter

:0048F153 89 4F 1C			mov     [edi+1Ch], ecx;Guardamos en la estructura la direccion para almacenar el nombre del fichero a salvar

:0048F156 C7 47 20 01 2C 00 00		mov     dword ptr [edi+20h], 2C01h;Tamao basura del buffer para almacenar el nombre del fichero a salvar

:0048F15D 89 57 30			mov     [edi+30h], edx;Guardamos en la estructura lpstrTitle

:0048F160 C7 47 34 06 00 08 00		mov     dword ptr [edi+34h],80006h;Guardamos en la estructura los flags.HIDEREADONLY|OVERWRITEPROMPT|EXPLORER

:0048F167 8D 46 6D			lea     eax, [esi+6D];Extensin por defecto.

:0048F16A 89 47 3C			mov     [edi+3ch], eax;Guardamos la extensin por defecto

:0048F16D 57				push    edi;Direccin de inicio de la estructura de GetSaveFileNameA

:0048F16E FF D3				call    ebx;GetSaveFileNameA

:0048F170 3D 01 00 00 00		cmp     eax,1;Tenemos un nombre de fichero vlido?

:0048F175 75 5D				jnz     short loc_0_48F1D4; Si no hay nombre, salimos.

:0048F177 56				push    esi;Cadena:Kernel32

:0048F178 FF 96 C8 00 00 00		call    dword ptr [esi+0C8h];Calculamos el handle del Kernel32

:0048F17E 8B F8				mov     edi, eax;Guardamos el handle de Kernel32

:0048F180 8D 5E 15			lea     ebx, [esi+15h];Cadena:CreateFileA

:0048F183 53				push    ebx;Cadena:CreateFileA

:0048F184 50				push    eax;Handle de Kernel32

:0048F185 FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direccin de CreateFileA

:0048F18B 8D 5E 78			lea     ebx, [esi+78h];Direccin del nombre del fichero dentro de la estructura

:0048F18E 6A 00				push    0;Sin template

:0048F190 68 80 00 00 00		push    80h;Fichero normal

:0048F195 6A 02				push    2;Crear siempre

:0048F197 6A 00				push    0;Sin atributos de seguridad

:0048F199 6A 01				push    1;Permite lectura compartida

:0048F19B 68 00 00 00 C0		push    0C0000000h;abierto para lectura y escritura

:0048F1A0 53				push    ebx;Direccin del nombre del fichero dentro de la estructura

:0048F1A1 FF D0				call    eax;CreateFileA

:0048F1A3 8B D8				mov     ebx, eax;Guardamos el handle del fichero creado

:0048F1A5 8D 4E 21			lea     ecx, [esi+21h];Cadena:WriteFile

:0048F1A8 51				push    ecx;Cadena:WriteFile

:0048F1A9 57				push    edi;Handle de Kernel32

:0048F1AA FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direccin de WriteFile

:0048F1B0 8D 96 D0 00 00 00		lea     edx, [esi+0D0h];Direccin de inico de memoria a salvar en el fichero

:0048F1B6 8D 8E D4 00 00 00		lea     ecx, [esi+0D4h];Direccion para guardar el nmero de bytes a escribir

:0048F1BC 6A 00				push    0;No overlapped

:0048F1BE 51				push    ecx;Direccion para guardar el nmero de bytes a escribir

:0048F1BF FF 31				push    dword ptr [ecx];Nmero de bytes a escribir

:0048F1C1 FF 32				push    dword ptr [edx];Direccin de inico de memoria a salvar en el fichero

:0048F1C3 53				push    ebx;Handle del fichero creado

:0048F1C4 FF D0				call    eax;CreateFile

:0048F1C6 8D 56 09			lea     edx,[esi+9];Cadena:CloseHandle

:0048F1C9 52				push    edx;Cadena:CloseHandle

:0048F1CA 57				push    edi;Handle de Kernel32

:0048F1CB FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direccin de CloseHandle

:0048F1D1 53				push    ebx;Handle del fichero creado

:0048F1D2 FF D0				call    eax;Close Handle			

:0048F1D4 5E				pop     esi;Restauramos los registros

:0048F1D5 5F				pop     edi

:0048F1D6 5A				pop     edx

:0048F1D7 59				pop     ecx

:0048F1D8 5B				pop     ebx

:0048F1D9 58				pop     eax

:0048F1DA 83 C4 10			add     esp, 10h;Protocolo de salida

:0048F1DD 8B E5				mov     esp, ebp

:0048F1DF 5D				pop     ebp

:0048F1D0 C3				retn    ;Volvemos al punto de llamada

