Function at 0x59059440
Capabilities:
Read file on windows

Disassembly:
push 0xffffffffffffffff
push 0x59148a37
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xed8
mov eax, dword [esp + 0xee8]
push ebx
push ebp
push esi
push edi
push 0x180
mov ebx, ecx
push 0x8000
push eax
mov dword [esp + 0x38], ebx
call fcn.590821dd
mov esi, eax
xor eax, eax
add esp, 0xc
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x40]
mov dword [esp + 0xef0], eax
call fcn.590a4b00
mov byte [esp + 0xef0], 1
mov ecx, 0x200
xor eax, eax
lea edi, [esp + 0x2e5]
mov byte [esp + 0x2e4], 0
mov byte [esp + 0xae8], al
rep stosd dword es:[edi], eax
mov ecx, 0xff
lea edi, [esp + 0xae9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
cmp esi, 0xffffffff
mov ebp, 0x400
stosb byte es:[edi], al
je 0x590597e1
lea ecx, [esp + 0x6e4]
push ebp
push ecx
push esi
call fcn.5908298b
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jle 0x590597d8
mov ecx, 0x100
lea esi, [esp + 0xae8]
lea edi, [esp + 0x2e4]
rep movsd dword es:[edi], dword [esi]
mov edi, str.X_NMIME_ATTACHMENT:
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
dec ecx
sub edx, ebp
push ecx
add edx, 0x400
lea ebx, [esp + ebp + 0x2e8]
push str.X_NMIME_ATTACHMENT:
push edx
push ebx
call fcn.5900d130
mov esi, eax
add esp, 0x10
cmp esi, 0xffffffff
je 0x59059738
mov edi, str.X_NMIME_ATTACHMENT:
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str.Content_Disposition:_attachment__filename_
add esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Content_Disposition:_attachment__filename_
push esi
push ebx
call fcn.5900d130
mov edx, eax
add esp, 0x10
cmp edx, 0xffffffff
je 0x59059738
mov edi, str.Content_Disposition:_attachment__filename_
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 0x5917a488
add edx, ecx
mov ecx, esi
sub ecx, edx
lea eax, [edx + ebp]
push ecx
lea eax, [esp + eax + 0x2f0]
push eax
mov dword [esp + 0x4c], eax
call fcn.5900d130
add esp, 0x10
cmp eax, 0xffffffff
mov dword [esp + 0x30], eax
je 0x59059738
lea edx, [esi + ebp]
push 0x3b
lea eax, [esp + edx + 0x2e8]
push eax
mov dword [esp + 0x3c], eax
call fcn.59081200
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x59059738
mov ecx, 0x60
xor eax, eax
lea edi, [esp + 0x161]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, ebx
lea ecx, [esp + 0x2e4]
sub eax, esi
mov byte [esp + 0x161], 0x3a
sub eax, ebp
mov byte [esp + 0x160], 0x3a
sub eax, ecx
cmp eax, 0x7e
jb 0x59059636
mov eax, 0x7d
mov esi, dword [esp + 0x34]
mov ecx, eax
mov edx, ecx
lea edi, [esp + 0x162]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
xor eax, eax
and ecx, 3
mov byte [esp + 0x5c], 0
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x40
lea edi, [esp + 0x5d]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x30]
stosw word es:[edi], ax
cmp ecx, 0x104
stosb byte es:[edi], al
jl 0x59059677
mov ecx, 0x103
mov esi, dword [esp + 0x3c]
mov eax, ecx
lea edi, [esp + 0x5c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x59155850]
mov dword [esp + 0x18], ecx
lea edx, [esp + 0x5c]
lea eax, [esp + 0x38]
push edx
push eax
mov byte [esp + 0xef8], 2
call fcn.59058e70
add esp, 8
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xef4], 3
call fcn.5909f310
lea ecx, [esp + 0x38]
mov byte [esp + 0xef0], 2
call fcn.5909f180
mov esi, dword [esp + 0x20]
push 0xffffffffffffffff
lea ecx, [esi + 1]
push ecx
lea ecx, [esp + 0x24]
call fcn.5905be80
mov eax, dword [esp + 0x1c]
lea edx, [esi + esi*2]
shl edx, 5
add edx, esi
mov ecx, 0x61
lea esi, [esp + 0x160]
lea edi, [eax + edx*4]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [esp + 0x44]
lea ecx, [esp + 0x18]
push ecx
push edx
lea ecx, [esp + 0x48]
call fcn.590a5110
lea eax, [esp + 0x2e4]
lea ecx, [esp + 0x18]
sub ebx, eax
mov byte [esp + 0xef0], 1
mov ebp, ebx
call fcn.5909f180
jmp 0x59059520
mov edx, dword [esp + 0x10]
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0xae8]
rep stosd dword es:[edi], eax
mov ecx, edx
sub ecx, ebp
add ecx, 0x400
cmp ecx, 0x400
jle 0x59059777
lea esi, [esp + edx + 0x2e4]
mov ecx, 0x100
lea edi, [esp + 0xae8]
xor ebp, ebp
rep movsd dword es:[edi], dword [esi]
jmp 0x59059799
mov eax, ebp
lea esi, [esp + ebp + 0x2e4]
sub eax, edx
mov edx, ecx
shr ecx, 2
lea edi, [esp + eax + 0xae8]
mov ebp, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x200
xor eax, eax
lea edi, [esp + 0x2e4]
push 0x400
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x18]
stosb byte es:[edi], al
lea eax, [esp + 0x6e8]
push eax
push ecx
call fcn.5908298b
add esp, 0xc
mov dword [esp + 0x10], eax
test eax, eax
jg 0x5905950b
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x2c]
push esi
call fcn.59081f0d
add esp, 4
lea edx, [ebx + 0xb8]
push 0
push edx
lea ecx, [esp + 0x58]
call fcn.590ac020
mov eax, dword [esp + 0x20]
mov byte [esp + 0xef0], 4
dec eax
test eax, eax
jl 0x590598f3
lea edi, [eax + eax*2]
shl edi, 5
add edi, eax
shl edi, 2
inc eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov ebp, dword [ebx + 0xdc]
dec ebp
test ebp, ebp
jl 0x590598da
lea esi, [ebp + ebp*8]
shl esi, 3
sub esi, ebp
shl esi, 3
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebx + 0xd8]
push 0x80
lea edx, [edi + ecx]
lea ecx, [esi + eax + 4]
push edx
push ecx
call fcn.59080e30
add esp, 0xc
test eax, eax
je 0x59059868
dec ebp
sub esi, 0x238
test ebp, ebp
jge 0x59059837
jmp 0x590598da
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebx + 0xd8]
lea eax, [ebp + ebp*8]
shl eax, 3
sub eax, ebp
lea edi, [edi + ecx + 0x80]
shl eax, 3
mov ecx, 0x41
lea esi, [eax + edx + 0x104]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0xdc]
sub ecx, ebp
dec ecx
je 0x590598c9
lea esi, [ecx + ecx*8]
mov edx, dword [ebx + 0xd8]
shl esi, 3
sub esi, ecx
shl esi, 3
inc ebp
push esi
lea ecx, [ebp + ebp*8]
shl ecx, 3
sub ecx, ebp
lea ecx, [edx + ecx*8]
add edx, eax
push ecx
push edx
call fcn.59081ba0
add esp, 0xc
mov eax, dword [ebx + 0xdc]
mov edi, dword [esp + 0x14]
dec eax
mov dword [ebx + 0xdc], eax
mov eax, dword [esp + 0x10]
sub edi, 0x184
dec eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
jne 0x5905981c
lea ecx, [esp + 0x50]
call fcn.590ac0d0
mov ecx, dword [esp + 0xef8]
lea edx, [esp + 0x40]
lea eax, [esp + 0x1c]
push edx
push eax
push ecx
mov ecx, ebx
call fcn.59058ba0
lea ecx, [esp + 0x50]
mov byte [esp + 0xef0], 1
call fcn.590ac080
lea ecx, [esp + 0x40]
mov byte [esp + 0xef0], 0
call fcn.590a4b10
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
test eax, eax
mov dword [esp + 0xee4], 0xffffffff
pop ebx
je 0x59059957
push eax
call fcn.591315d9
add esp, 4
mov ecx, dword [esp + 0xed8]
mov dword fs:[0], ecx
add esp, 0xee4
ret 4