Function at 0x4460f0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x48
push ebx
push ebp
push esi
push edi
xor esi, esi
push 0x100
mov dword [esp + 0x4c], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x3c], esi
call fcn.0044c0d4
add esp, 4
cmp eax, esi
mov dword [esp + 0x14], eax
je 0x44697f
mov esi, dword [esp + 0x60]
xor eax, eax
xor ecx, ecx
mov ebp, dword [esp + 0x5c]
mov ah, byte [esi + 8]
mov cl, byte [esi + 0xa]
mov al, byte [esi + 9]
xor edx, edx
mov dl, byte [esi + 0xb]
push 0
shl eax, 8
or eax, ecx
push 0
shl eax, 8
or eax, edx
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ebx, dword [sym.imp.KERNEL32.dll_ReadFile]
lea eax, [esp + 0x24]
push 0
push eax
lea ecx, [esp + 0x54]
push 6
push ecx
push ebp
call ebx
test eax, eax
je 0x44691d
cmp dword [esp + 0x24], 6
jne 0x44691d
mov eax, dword [esp + 0x4e]
xor edx, edx
mov dh, al
movzx ax, ah
or eax, edx
test ax, ax
mov dword [esp + 0x28], eax
jne 0x4461bb
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x48
ret 0xc
mov eax, dword [esp + 0x28]
and eax, 0xffff
lea edi, [eax + eax*2]
shl edi, 2
push edi
call fcn.0044c0d4
add esp, 4
lea ecx, [esp + 0x24]
mov dword [esp + 0x38], eax
push 0
push ecx
push edi
push eax
push ebp
call ebx
test eax, eax
je 0x44691d
cmp dword [esp + 0x24], edi
jne 0x44691d
xor edx, edx
xor eax, eax
mov dh, byte [esi + 0xc]
xor ecx, ecx
mov dl, byte [esi + 0xd]
mov ah, dl
xor edx, edx
mov al, byte [esi + 0xe]
mov dh, byte [esp + 0x50]
mov ch, al
movzx ax, byte [esp + 0x51]
mov cl, byte [esi + 0xf]
or edx, eax
sub ecx, edx
mov edi, ecx
test di, di
jne 0x44622e
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x48
ret 0xc
and edi, 0xffff
push edi
call fcn.0044c0d4
xor ecx, ecx
xor edx, edx
mov ch, byte [esi + 8]
mov dl, byte [esi + 0xa]
mov cl, byte [esi + 9]
mov dword [esp + 0x14], eax
shl ecx, 8
or ecx, edx
xor eax, eax
mov al, byte [esi + 0xb]
xor edx, edx
mov dh, byte [esp + 0x54]
add esp, 4
shl ecx, 8
or ecx, eax
push 0
movsx eax, dx
mov edx, dword [esp + 0x55]
push 0
and edx, 0xff
or eax, edx
add ecx, eax
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
lea eax, [esp + 0x24]
push 0
mov ecx, dword [esp + 0x14]
push eax
push edi
push ecx
push ebp
call ebx
test eax, eax
je 0x44691d
cmp dword [esp + 0x24], edi
jne 0x44691d
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
add edi, edx
add eax, 0xffff
mov dword [esp + 0x3c], edi
mov dword [esp + 0x60], 0
mov dword [esp + 0x28], eax
cmp word [esp + 0x60], 3
jae 0x446835
xor ecx, ecx
and eax, 0xffff
mov dword [esp + 0x34], ecx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x38]
lea eax, [eax + eax*2]
lea ebp, [ecx + eax*4]
mov ecx, 6
mov eax, ebp
xor edx, edx
mov dl, byte [eax + 1]
mov dh, byte [eax]
mov word [eax], dx
add eax, 2
dec ecx
jne 0x4462f1
mov cx, word [ebp]
cmp cx, 3
jne 0x446334
mov ax, word [ebp + 4]
cmp word [0x475a76], ax
jne 0x446323
mov edx, 1
mov dword [esp + 0x5c], edx
jmp 0x446339
cmp ax, 0x409
jne 0x446334
mov edx, 1
mov dword [esp + 0x34], edx
jmp 0x446339
mov edx, 1
cmp cx, dx
jne case.0x446371.3
mov esi, dword [esp + 0x10]
xor eax, eax
mov ax, word [ebp + 0xa]
xor ecx, ecx
mov cx, word [ebp + 8]
add esi, eax
mov eax, dword [esp + 0x3c]
add ecx, esi
cmp eax, ecx
jb case.0x446552.3
xor eax, eax
mov ax, word [ebp + 6]
cmp eax, 4
ja case.0x446371.3
jmp dword [eax*4 + 0x446990]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x30], edx
test eax, eax
jne case.0x446371.3
push 0x20
call fcn.0044c0d4
mov edi, eax
mov ecx, 8
xor eax, eax
mov dword [esp + 0x1c], edi
rep stosd dword es:[edi], eax
mov ax, word [ebp + 8]
add esp, 4
cmp ax, 0x20
jbe 0x4463b2
mov eax, 0x20
jmp 0x4463b7
and eax, 0xffff
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
xor esi, esi
mov ecx, eax
mov si, word [ebp + 0xa]
add esi, edx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x446371.3
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], edx
test eax, eax
jne case.0x446371.3
push 0x20
call fcn.0044c0d4
mov edi, eax
mov ecx, 8
xor eax, eax
mov dword [esp + 0x20], edi
rep stosd dword es:[edi], eax
mov ax, word [ebp + 8]
add esp, 4
cmp ax, 0x20
jbe 0x446416
mov eax, 0x20
jmp 0x44641b
and eax, 0xffff
mov edi, dword [esp + 0x10]
xor esi, esi
mov si, word [ebp + 0xa]
mov ecx, eax
add esi, edi
mov edi, dword [esp + 0x1c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x446371.3
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], edx
test eax, eax
jne case.0x446371.3
push 0x40
call fcn.0044c0d4
mov edi, eax
mov ecx, 0x10
xor eax, eax
mov dword [esp + 0x24], edi
rep stosd dword es:[edi], eax
mov ax, word [ebp + 8]
add esp, 4
cmp ax, 0x40
jbe 0x446478
mov eax, 0x40
jmp 0x44647d
and eax, 0xffff
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
xor esi, esi
mov ecx, eax
mov si, word [ebp + 0xa]
add esi, edx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x446371.3
mov eax, dword [esp + 0x2c]
test eax, eax
jne case.0x446371.3
push 0x80
call fcn.0044c0d4
mov ebx, eax
add esp, 4
mov byte [ebx + 0x7f], 0
mov ax, word [ebp + 8]
cmp ax, 0x7e
jbe 0x4464cb
mov eax, 0x7e
jmp 0x4464d0
and eax, 0xffff
mov edi, dword [esp + 0x10]
xor esi, esi
mov si, word [ebp + 0xa]
mov ecx, eax
add esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00437f20
push ebx
mov ecx, dword [esp + 0x68]
mov byte [ecx + 0x61], al
call fcn.0044c186
mov ebx, dword [esp + 0x18]
add esp, 4
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x446522
mov eax, dword [esp + 0x34]
test eax, eax
je case.0x446552.3
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x3c]
xor eax, eax
xor ecx, ecx
mov ax, word [ebp + 0xa]
mov cx, word [ebp + 8]
lea edx, [ecx + eax]
add edx, edi
cmp esi, edx
jb case.0x446552.3
xor edx, edx
mov dx, word [ebp + 6]
cmp edx, 4
ja case.0x446552.3
jmp dword [edx*4 + 0x4469a4]
mov edx, dword [esp + 0x40]
test edx, edx
jne case.0x446552.3
mov edx, dword [esp + 0x10]
mov edi, ebx
lea esi, [eax + edx]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x64]
lea esi, [ecx + 2]
mov ecx, 8
mov edi, esi
rep stosd dword es:[edi], eax
mov ax, word [ebp + 8]
mov byte [esi], 0
mov ecx, eax
cdq
sub eax, edx
sar eax, 1
shr ecx, 1
cmp eax, 0x20
jge 0x4465d4
test ecx, ecx
mov eax, ebx
jle 0x4465bb
mov edi, ecx
xor edx, edx
mov dl, byte [eax + 1]
mov dh, byte [eax]
mov word [eax], dx
add eax, 2
dec edi
jne 0x4465ab
push 0
push 0
push 0x20
push esi
push ecx
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x4465d4
mov byte [esi], al
mov ax, word [ebp + 2]
neg ax
sbb al, al
and al, 0xfe
add al, 2
mov byte [0x475a6c], al
mov eax, dword [esp + 0x5c]
test eax, eax
je case.0x446552.3
mov eax, dword [esp + 0x60]
mov dword [esp + 0x40], 1
inc eax
mov dword [esp + 0x60], eax
jmp case.0x446552.3
mov edx, dword [esp + 0x44]
test edx, edx
jne case.0x446552.3
mov edx, dword [esp + 0x10]
mov edi, ebx
lea esi, [eax + edx]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x64]
lea esi, [ecx + 0xa2]
mov ecx, 8
mov edi, esi
rep stosd dword es:[edi], eax
mov ax, word [ebp + 8]
mov byte [esi], 0
mov ecx, eax
cdq
sub eax, edx
sar eax, 1
shr ecx, 1
cmp eax, 0x20
jge 0x446686
test ecx, ecx
mov eax, ebx
jle 0x44666d
mov edi, ecx
xor edx, edx
mov dh, byte [eax]
mov dl, byte [eax + 1]
mov word [eax], dx
add eax, 2
dec edi
jne 0x44665d
push 0
push 0
push 0x20
push esi
push ecx
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x446686
mov byte [esi], al
mov eax, dword [esp + 0x5c]
test eax, eax
je case.0x446552.3
mov eax, dword [esp + 0x60]
mov dword [esp + 0x44], 1
inc eax
mov dword [esp + 0x60], eax
jmp case.0x446552.3
mov edx, dword [esp + 0x48]
test edx, edx
jne case.0x446552.3
mov edx, dword [esp + 0x10]
mov edi, ebx
lea esi, [eax + edx]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x64]
lea esi, [ecx + 0x62]
mov ecx, 0x10
mov edi, esi
rep stosd dword es:[edi], eax
mov ax, word [ebp + 8]
mov byte [esi], 0
mov ecx, eax
cdq
sub eax, edx
sar eax, 1
shr ecx, 1
cmp eax, 0x40
jge 0x446723
test ecx, ecx
mov eax, ebx
jle 0x44670a
mov edi, ecx
xor edx, edx
mov dh, byte [eax]
mov dl, byte [eax + 1]
mov word [eax], dx
add eax, 2
dec edi
jne 0x4466fa
push 0
push 0
push 0x40
push esi
push ecx
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x446723
mov byte [esi], al
mov eax, dword [esp + 0x5c]
test eax, eax
je case.0x446552.3
mov eax, dword [esp + 0x60]
mov dword [esp + 0x48], 1
inc eax
mov dword [esp + 0x60], eax
jmp case.0x446552.3
mov eax, dword [esp + 0x2c]
test eax, eax
jne case.0x446552.3
push 0x80
call fcn.0044c0d4
mov ebx, eax
add esp, 4
mov byte [ebx + 0x7f], 0
mov ax, word [ebp + 8]
cmp ax, 0x100
jbe 0x446775
mov eax, 0x100
jmp 0x44677a
and eax, 0xffff
mov edi, dword [esp + 0x10]
xor esi, esi
mov si, word [ebp + 0xa]
mov ecx, eax
add esi, edi
mov edi, dword [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov bp, word [ebp + 8]
cmp bp, 0xfc
jbe 0x4467aa
mov eax, 0xfc
jmp 0x4467b2
and ebp, 0xffff
mov eax, ebp
mov ecx, eax
mov byte [ebx], 0
cdq
sub eax, edx
sar eax, 1
shr ecx, 1
cmp eax, 0x7f
jge 0x4467fa
mov eax, dword [esp + 0x14]
test ecx, ecx
jle 0x4467dd
mov esi, ecx
xor edx, edx
mov dl, byte [eax + 1]
mov dh, byte [eax]
mov word [eax], dx
add eax, 2
dec esi
jne 0x4467cd
mov eax, dword [esp + 0x14]
push 0
push 0
push 0x7f
push ebx
push ecx
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x4467fa
mov byte [ebx], al
push ebx
call fcn.00437f20
push ebx
mov ecx, dword [esp + 0x68]
mov byte [ecx + 0x61], al
call fcn.0044c186
mov ebx, dword [esp + 0x18]
add esp, 4
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x28]
mov dx, ax
add eax, 0xffff
test dx, dx
mov dword [esp + 0x28], eax
jne 0x4462c5
mov eax, dword [esp + 0x64]
mov cl, byte [eax + 2]
lea edx, [eax + 2]
test cl, cl
je 0x446861
mov cl, byte [eax + 0xa2]
test cl, cl
je 0x446861
mov cl, byte [eax + 0x62]
test cl, cl
je 0x446861
mov dword [esp + 0x34], 1
jmp 0x44691d
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4468f3
mov eax, dword [esp + 0x18]
test eax, eax
je 0x446894
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
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]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4468c5
mov ecx, dword [esp + 0x64]
mov edi, eax
xor eax, eax
lea ebx, [ecx + 0xa2]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4468f3
mov ecx, dword [esp + 0x64]
mov edi, eax
xor eax, eax
lea ebx, [ecx + 0x62]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp byte [edx], 0
je 0x446915
mov eax, dword [esp + 0x64]
mov cl, byte [eax + 0xa2]
test cl, cl
je 0x446915
mov cl, byte [eax + 0x62]
mov dword [esp + 0x34], 1
test cl, cl
jne 0x44691d
mov dword [esp + 0x34], 0
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0044c186
mov eax, dword [esp + 0x14]
add esp, 4
test eax, eax
je 0x44693b
push eax
call fcn.0044c186
add esp, 4
mov eax, dword [esp + 0x38]
test eax, eax
je 0x44694c
push eax
call fcn.0044c186
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x44695d
push eax
call fcn.0044c186
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x44696e
push eax
call fcn.0044c186
add esp, 4
mov eax, dword [esp + 0x20]
test eax, eax
je 0x44697f
push eax
call fcn.0044c186
add esp, 4
mov eax, dword [esp + 0x34]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0xc