Function at 0x474b30
Capabilities:
Get file size
Read file on windows

Disassembly:
sub esp, 0x438
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0x2c]
xor ebx, ebx
push 0x104
push eax
push ebx
mov dword [esp + 0x1c], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
mov edx, dword [esp + 0x44c]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x30]
push eax
push ecx
call dword [sym.imp.SHLWAPI.dll_PathCombineA]
push ebx
push 0x80
push 3
push ebx
push ebx
lea edx, [esp + 0x40]
push bind
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x474c14
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebp, eax
push ebp
mov dword [esp + 0x1c], ebp
call fcn.0048ac32
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x24], edi
jne 0x474bc8
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x438
ret
lea eax, [esp + 0x28]
push 0
push eax
push ebp
push edi
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [esp + 0x450]
xor edx, edx
xor ecx, ecx
cmp ebx, ebp
mov dword [esp + 0x14], edx
jae 0x474c0b
mov al, byte [ebx + edi]
cmp al, 0x3b
je 0x474c1f
cmp al, 0xd
je 0x474c1f
mov byte [esp + ecx + 0x2c], al
inc ebx
inc ecx
cmp ebx, ebp
mov dword [esp + 0x10], ebx
jb 0x474bf2
push edi
call fcn.0048ace4
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x438
ret
cmp ebx, ebp
jae 0x474c0b
test edx, edx
jne 0x474c30
cmp ecx, 8
jl 0x474d94
cmp edx, 0xb
mov byte [esp + ecx + 0x2c], 0
ja case.default.0x474c3e
jmp dword [edx*4 + 0x474e9c]
lea ecx, [esp + 0x20]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.004596c0
mov eax, dword [esp + 0x28]
add esp, 8
mov dword [esp + 0x228], eax
jmp case.default.0x474c3e
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.004596c0
mov eax, dword [esp + 0x24]
add esp, 8
mov dword [esp + 0x22c], eax
jmp case.default.0x474c3e
xor eax, eax
mov cl, byte [esp + eax + 0x2c]
mov byte [esp + eax + 0x130], cl
inc eax
test cl, cl
jne 0x474c8b
jmp case.default.0x474c3e
lea ecx, [esp + 0x2c]
push ecx
call fcn.0048c4a4
add esp, 4
mov byte [esp + 0x338], al
jmp case.default.0x474c3e
lea edx, [esp + 0x2c]
push edx
call fcn.0048c4a4
add esp, 4
mov byte [esp + 0x339], al
jmp case.default.0x474c3e
lea eax, [esp + 0x2c]
push eax
call fcn.0048c4a4
add esp, 4
mov dword [esp + 0x330], eax
jmp case.default.0x474c3e
lea ecx, [esp + 0x2c]
push ecx
call fcn.0048c4a4
add esp, 4
mov dword [esp + 0x334], eax
jmp case.default.0x474c3e
xor eax, eax
mov cl, byte [esp + eax + 0x2c]
mov byte [esp + eax + 0x220], cl
inc eax
test cl, cl
jne 0x474d03
jmp case.default.0x474c3e
xor eax, eax
mov cl, byte [esp + eax + 0x2c]
mov byte [esp + eax + 0x1b0], cl
inc eax
test cl, cl
jne 0x474d17
jmp case.default.0x474c3e
lea edx, [esp + 0x2c]
push edx
call fcn.00474340
add esp, 4
xor eax, eax
mov cl, byte [esp + eax + 0x2c]
mov byte [esp + eax + 0x1f0], cl
inc eax
test cl, cl
jne 0x474d38
jmp case.default.0x474c3e
xor eax, eax
mov cl, byte [esp + eax + 0x2c]
mov byte [esp + eax + 0x200], cl
inc eax
test cl, cl
jne 0x474d4c
jmp case.default.0x474c3e
xor eax, eax
mov cl, byte [esp + eax + 0x2c]
mov byte [esp + eax + 0x210], cl
inc eax
test cl, cl
jne 0x474d60
mov al, byte [ebx + edi]
cmp al, 0x3b
jne 0x474d86
mov edx, dword [esp + 0x14]
inc ebx
mov dword [esp + 0x10], ebx
inc edx
jmp 0x474be8
cmp al, 0xd
je 0x474dad
mov edx, dword [esp + 0x14]
inc edx
jmp 0x474be8
cmp ebx, ebp
jae 0x474be6
mov al, byte [ebx + edi]
inc ebx
cmp al, 0xa
mov dword [esp + 0x10], ebx
jne 0x474d94
jmp 0x474be6
mov edx, dword [esi + 8]
xor edi, edi
test edx, edx
jle 0x474e89
mov ebp, dword [esi + 0x28]
lea esi, [esp + 0x130]
mov eax, ebp
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x474dea
test cl, cl
je 0x474de6
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x474dea
add eax, 2
add esi, 2
test cl, cl
jne 0x474dc6
xor eax, eax
jmp 0x474def
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x474e07
inc edi
add ebp, 0x318
cmp edi, edx
jl 0x474dbd
mov esi, dword [esp + 0x450]
jmp 0x474e81
mov esi, dword [esp + 0x450]
mov eax, edi
shl eax, 5
mov ecx, dword [esi + 0x28]
mov edx, dword [esp + 0x228]
add eax, edi
lea eax, [eax + eax*2]
shl eax, 3
mov dword [ecx + eax + 0xf8], edx
mov ecx, dword [esi + 0x28]
mov edx, dword [esp + 0x22c]
mov dword [ecx + eax + 0xfc], edx
mov ecx, dword [esi + 0x28]
mov edx, dword [esp + 0x330]
mov dword [ecx + eax + 0x200], edx
mov ecx, dword [esi + 0x28]
mov edx, dword [esp + 0x334]
mov dword [ecx + eax + 0x204], edx
mov ecx, dword [esi + 0x28]
mov dl, byte [esp + 0x338]
mov byte [ecx + eax + 0x208], dl
mov ecx, dword [esi + 0x28]
mov dl, byte [esp + 0x339]
mov byte [ecx + eax + 0x209], dl
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
add ebx, 2
mov dword [esp + 0x10], ebx
jmp 0x474be6