Function at 0x7fd110
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
mov ebx, dword [ebp + 8]
push esi
lea esi, [ebx + 0x110]
push edi
mov edi, dword [ebx + 0x910]
mov dword [ebp - 0xc], esi
mov dword [ebp - 8], esi
mov dword [ebp - 4], edi
xor edx, edx
xor ecx, ecx
cmp edx, ecx
jne 0x7fd233
cmp edi, 8
jl 0x7fd233
cmp byte [esi], 0x47
jne 0x7fd1c3
cmp byte [esi + 1], 0x53
jne 0x7fd1c3
mov cl, byte [esi + 3]
mov al, byte [esi + 2]
not cl
cmp al, cl
jne 0x7fd1c3
movzx ebx, al
add ebx, 8
lea edx, [ebx + 8]
cmp edi, edx
jge 0x7fd174
mov ebx, dword [ebp + 8]
mov edx, 1
jmp 0x7fd133
cmp byte [ebx + esi + 6], 0xd
jne 0x7fd1b8
cmp byte [ebx + esi + 7], 0xa
jne 0x7fd1b8
xor eax, eax
test ebx, ebx
lea ecx, [esi + 4]
jle 0x7fd1a3
mov dword [ebp - 0x10], ebx
mov edi, edi
movzx dx, byte [ecx]
imul eax, eax, 0xd
add eax, edx
mov edx, dword [ebp - 0x10]
inc ecx
dec edx
mov dword [ebp - 0x10], edx
jne 0x7fd190
xor ecx, ecx
mov ch, byte [ebx + esi + 5]
movzx edx, ax
mov cl, byte [ebx + esi + 4]
cmp edx, ecx
je 0x7fd317
mov ebx, dword [ebp + 8]
mov byte [esi], 0
jmp 0x7fd131
inc esi
dec edi
test edi, edi
mov dword [ebp - 4], edi
jle 0x7fd226
lea esp, [esp]
cmp byte [esi], 0x47
jne 0x7fd1f1
cmp edi, 1
jle 0x7fd1e0
cmp byte [esi + 1], 0x53
jne 0x7fd1f1
cmp edi, 3
jle 0x7fd207
mov al, byte [esi + 3]
mov cl, byte [esi + 2]
not al
cmp cl, al
je 0x7fd207
inc esi
dec edi
test edi, edi
jg 0x7fd1d0
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 4], edi
mov dword [ebp - 8], ecx
mov esi, ecx
jmp 0x7fd133
test edi, edi
mov dword [ebp - 4], edi
jle 0x7fd226
mov ebx, dword [ebp + 8]
mov ecx, edi
mov edi, dword [ebp - 0xc]
mov eax, ecx
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, eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 8], ecx
mov esi, ecx
jmp 0x7fd133
lea eax, [ebx + 0x88]
push eax
mov dword [eax], ecx
mov dword [ebx + 0x8c], ecx
mov dword [ebx + 0x90], ecx
mov dword [ebx + 0x94], ecx
lea ecx, [ebx + 0xc4]
push ecx
mov ecx, dword [ebx + 0x84]
mov edx, 0x800
sub edx, edi
push edx
lea eax, [esi + edi]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x7fd29c
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
jne 0x7fd29c
mov edx, dword [ebx + 0x84]
push 1
lea eax, [ebx + 0xc4]
push eax
lea eax, [ebx + 0x88]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
mov eax, dword [ebx + 0xc4]
test eax, eax
jbe 0x7fd2ad
add edi, eax
jmp 0x7fd12e
mov eax, dword [ebx + 0xac]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x7fd37a
xor eax, eax
lea ecx, [ebx + 0x9c]
push ecx
lea edx, [ebx + 0xc8]
mov dword [ebx + 0x88], eax
mov dword [ebx + 0x8c], eax
mov dword [ebx + 0x90], eax
mov dword [ebx + 0x94], eax
mov eax, dword [ebx + 0x84]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_WaitCommEvent]
test eax, eax
jne 0x7fd30d
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
je 0x7fd37a
mov edx, 1
jmp 0x7fd133
mov eax, dword [ebp + 0xc]
mov ecx, ebx
mov edx, ecx
shr ecx, 2
add esi, 4
lea edi, [eax + 8]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebx - 8]
mov dword [eax], ecx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [ebp + 0xc]
mov dword [edx + 4], eax
mov eax, dword [ebp - 4]
sub eax, ebx
lea ecx, [eax - 8]
test ecx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x910], ecx
je 0x7fd36e
mov edx, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
mov eax, ecx
shr ecx, 2
lea esi, [ebx + edx + 8]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebx + 0x910], edi
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret