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

Disassembly:
push 0xffffffffffffffff
push 0x46ba1b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x12c
mov eax, dword [0x480630]
xor eax, esp
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x13c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x144]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x140]
push ebp
push edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x20], eax
xor ebp, ebp
xor eax, eax
cmp edx, ebp
mov ecx, 0x41
lea edi, [esp + 0x29]
mov byte [esp + 0x28], 0
rep stosd dword es:[edi], eax
je 0x40aeb0
cmp byte [edx], 0
je 0x40aeb0
push 0x105
push edx
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x40af0e
push 0x105
lea eax, [esp + 0x2c]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x28]
push 0x5c
push ecx
call fcn.00457e22
add esp, 8
cmp eax, ebp
je 0x40aed8
mov byte [eax + 1], 0
mov ecx, 0x105
lea eax, [esp + 0x28]
cmp byte [eax], 0
je 0x40aeec
inc eax
dec ecx
jne 0x40aee1
jmp 0x40af0e
cmp ecx, ebp
je 0x40af0e
mov eax, 0x105
sub eax, ecx
push str.Label.dat
mov edx, 0x105
sub edx, eax
push edx
lea eax, [esp + eax + 0x30]
push eax
call fcn.004084d0
push ebp
push ebp
push 3
push ebp
push 1
push SysReAllocStringLen
lea ecx, [esp + 0x40]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [esp + 0x18], eax
je 0x40b274
push ebx
push esi
push ebp
push eax
mov dword [esp + 0x34], ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
lea ebx, [esi + 1]
push ebx
mov dword [esp + 0x14], ebx
call fcn.00456452
mov edi, eax
mov ecx, ebx
mov edx, ecx
shr ecx, 2
xor eax, eax
mov dword [esp + 0x18], edi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
push ebx
rep stosb byte es:[edi], al
call fcn.00456452
mov ecx, dword [esp + 0x18]
mov edx, ecx
mov ebx, eax
shr ecx, 2
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x1c]
add esp, 8
test edi, edi
je 0x40b267
test ebx, ebx
je 0x40b267
mov ecx, dword [esp + 0x20]
push 0
lea eax, [esp + 0x30]
push eax
push esi
push edi
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40b267
mov edx, dword [esp + 0x10]
push edi
push edx
push ebx
call fcn.00449ee0
add esp, 0xc
push ebx
call dword [sym.imp.USER32.dll_CharUpperA]
push str._nSN
push ebx
call fcn.00457e8d
mov esi, eax
add esp, 8
test esi, esi
je 0x40b035
mov ebp, dword [esp + 0x24]
test ebp, ebp
je 0x40b035
push str._nSN
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add esi, eax
mov al, byte [esi]
xor edi, edi
test al, al
je 0x40b031
sub ebp, esi
movsx eax, byte [esi]
push eax
push str._r_n_b
call fcn.00457c44
add esp, 8
test eax, eax
jne 0x40b02d
cmp edi, dword [esp + 0x158]
jge 0x40b02d
mov al, byte [esi]
mov byte [esi + ebp], al
mov al, byte [esi + 1]
inc edi
inc esi
test al, al
jne 0x40b001
mov ebp, dword [esp + 0x24]
mov byte [edi + ebp], 0
push str._nID
push ebx
call fcn.00457e8d
mov esi, eax
add esp, 8
test esi, esi
je 0x40b0a4
mov ebp, dword [esp + 0x28]
test ebp, ebp
je 0x40b0a4
push str._nID
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add esi, eax
mov al, byte [esi]
xor edi, edi
test al, al
je 0x40b0a0
sub ebp, esi
jmp 0x40b070
movsx eax, byte [esi]
push eax
push str._r_n_b
call fcn.00457c44
add esp, 8
test eax, eax
jne 0x40b09c
cmp edi, dword [esp + 0x158]
jge 0x40b09c
mov cl, byte [esi]
mov byte [esi + ebp], cl
mov al, byte [esi + 1]
inc edi
inc esi
test al, al
jne 0x40b070
mov ebp, dword [esp + 0x28]
mov byte [edi + ebp], 0
push str._nACTIONID
push ebx
call fcn.00457e8d
mov esi, eax
add esp, 8
test esi, esi
je 0x40b10b
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x40b10b
push str._nACTIONID
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add esi, eax
mov al, byte [esi]
xor edi, edi
test al, al
je 0x40b107
sub ebp, esi
movsx eax, byte [esi]
push eax
push str._r_n_b
call fcn.00457c44
add esp, 8
test eax, eax
jne 0x40b103
cmp edi, dword [esp + 0x158]
jge 0x40b103
mov dl, byte [esi]
mov byte [esi + ebp], dl
mov al, byte [esi + 1]
inc edi
inc esi
test al, al
jne 0x40b0d7
mov ebp, dword [esp + 0x18]
mov byte [edi + ebp], 0
push str._nTITLE
push ebx
call fcn.00457e8d
mov esi, eax
add esp, 8
test esi, esi
je 0x40b24f
mov ebp, dword [esp + 0x1c]
test ebp, ebp
je 0x40b24f
push str._nTITLE
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [esp + 0x10]
add esi, eax
mov eax, dword [esp + 0x14]
push eax
push ecx
push ebx
call fcn.00449ee0
mov al, byte [esi]
add esp, 0xc
xor edi, edi
test al, al
je 0x40b187
sub ebp, esi
lea esp, [esp]
movsx eax, byte [esi]
push eax
push 0x4711d4
call fcn.00457c44
add esp, 8
test eax, eax
jne 0x40b183
mov dl, byte [esi]
mov byte [esi + ebp], dl
mov al, byte [esi + 1]
inc edi
inc esi
test al, al
jne 0x40b160
mov ebp, dword [esp + 0x1c]
push ebp
lea ecx, [esp + 0x14]
mov byte [edi + ebp], 0
call fcn.00405970
push 0x4708d8
push 0x4711cc
lea ecx, [esp + 0x18]
mov dword [esp + 0x14c], 0
call fcn.00409bb0
push 0x4708d8
push 0x4711c0
lea ecx, [esp + 0x18]
call fcn.00409bb0
push 0x4708d8
push 0x4711b8
lea ecx, [esp + 0x18]
call fcn.00409bb0
push 0x4708d8
push 0x4711b0
lea ecx, [esp + 0x18]
call fcn.00409bb0
push 0x4708d8
push 0x4711a8
lea ecx, [esp + 0x18]
call fcn.00409bb0
lea ecx, [esp + 0x10]
call fcn.00409aa0
lea ecx, [esp + 0x10]
call fcn.00409a40
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x158]
push esi
push 0x4711a4
push eax
push ebp
call fcn.004037a0
mov eax, dword [0x4800dc]
lea ecx, [esi - 0xc]
add esp, 0x10
cmp ecx, eax
je 0x40b24f
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40b24f
push esi
call fcn.00457c3f
add esp, 4
mov edx, dword [esp + 0x14]
push edx
mov ebp, 1
call fcn.00457c3f
push ebx
call fcn.00457c3f
add esp, 8
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop esi
pop ebx
mov ecx, dword [esp + 0x134]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x12c]
mov eax, ebp
pop ebp
xor ecx, esp
call fcn.004570de
add esp, 0x138
ret