Function at 0x40fc80
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46d565
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push esi
push edi
mov eax, dword [0x495580]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x1c], ecx
mov edi, dword [ebp + 0xc]
mov ecx, edi
push 0
push 0x4792ac
call fcn.00403e20
mov esi, dword [ebp + 8]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
mov dword [ebp - 0x34], ebx
test ebx, ebx
jne 0x40fcee
push esi
push str.The_file__s_could_not_be_opened_as_a_Windows_DLL
push edi
xor bh, bh
call fcn.00403530
add esp, 0xc
mov dword [ebp - 0x14], 0
xor eax, eax
mov dword [ebp - 0x2c], eax
jmp 0x40fd26
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.KbdLayerDescriptor
push ebx
call esi
push str.KbdNlsLayerDescriptor
push ebx
mov dword [ebp - 0x14], eax
call esi
cmp dword [ebp - 0x14], 0
mov bh, 1
mov esi, dword [ebp + 8]
mov dword [ebp - 0x2c], eax
jne 0x40fd26
push esi
push str.The_file__s_does_not_have_KbdLayerDescriptor_export_entry__probably_not_a_keyboard_layout_DLL
push edi
xor bh, bh
call fcn.00403530
add esp, 0xc
lea ecx, [ebp - 0x48]
call fcn.0043a4be
mov dword [ebp - 4], 0
mov dword [ebp - 0x18], 0
test bh, bh
je 0x40ff04
push 0x479bac
push esi
call fcn.00454c19
mov edi, eax
add esp, 8
mov dword [ebp - 0x28], edi
test edi, edi
je 0x40fe99
push 2
push 0
push edi
call fcn.00455987
add esp, 0xc
push edi
test eax, eax
je 0x40fd7e
call fcn.00454b33
add esp, 4
jmp 0x40fe99
call fcn.00455fe6
push dword [ebp - 0x28]
mov edi, eax
call fcn.00454b33
push 0x479bac
push esi
call fcn.00454c19
add esp, 0x10
mov dword [ebp - 0x20], eax
test eax, eax
je 0x40fe99
push 0xffffffffffffffff
push edi
lea ecx, [ebp - 0x48]
call fcn.0043a61f
push dword [ebp - 0x20]
push 1
push edi
push dword [ebp - 0x44]
call fcn.00454e09
push dword [ebp - 0x20]
mov esi, eax
call fcn.00454b33
add esp, 0x14
cmp esi, 1
jne 0x40fe96
mov esi, dword [ebp - 0x44]
mov edx, edi
mov ecx, esi
call fcn.0040fbc0
test eax, eax
je 0x40fe96
add eax, 0x18
sub edi, eax
add edi, esi
cmp edi, 0x10
jbe 0x40fe96
test eax, eax
je 0x40fe96
cmp byte [eax], 0x4b
jne 0x40fe96
cmp byte [eax + 1], 0x42
jne 0x40fe96
cmp byte [eax + 2], 0x44
jne 0x40fe96
cmp byte [eax + 3], 0x45
jne 0x40fe96
lea esi, [eax + 4]
test esi, esi
je 0x40fe96
xor edx, edx
lea ecx, [ebp - 0x30]
call fcn.0042e6b0
test eax, eax
je 0x40fe96
mov edi, dword [ebp - 0x30]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x24]
mov dword [ebp - 0x20], 0
push eax
lea eax, [ebp - 0x20]
mov dword [ebp - 0x24], 0
push eax
mov edx, edi
mov dword [ebp - 0x28], 0
mov ecx, esi
call fcn.0042e550
add esp, 0xc
mov dword [ebp - 0x30], eax
test edi, edi
je 0x40fe78
push edi
call fcn.0045478a
mov eax, dword [ebp - 0x30]
add esp, 4
test eax, eax
je 0x40fe96
mov eax, dword [ebp - 0x20]
sub esi, dword [esi + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x2c], eax
jmp 0x40fed0
mov esi, dword [ebp + 8]
call dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x40feb7
push esi
push str.Method_KbdLayerDescriptor_from_file__s_returned_NULL
push edi
xor bh, bh
call fcn.00403530
add esp, 0xc
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x40fec3
call eax
mov dword [ebp - 0x18], eax
xor esi, esi
mov dword [ebp - 0x2c], 0
test bh, bh
je 0x40ff04
mov ebx, dword [ebp - 0x1c]
mov ecx, ebx
mov eax, dword [ebx]
call dword [eax + 0x10]
push dword [ebp + 8]
mov eax, dword [ebx]
mov ecx, ebx
push esi
push dword [ebp - 0x2c]
push dword [ebp - 0x18]
mov eax, dword [eax + 0x14]
push dword [ebp - 0x20]
call eax
mov bh, al
test bh, bh
jne 0x40ff04
push 0x30
push str.KBDTABLES_structure_is_corrupted_or_inconsistent
mov ecx, edi
call fcn.00403e20
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x40ff12
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [ebp - 0x40], 0
jle 0x40ff24
push 0xffffffffffffffff
push 0
lea ecx, [ebp - 0x48]
call fcn.0043a61f
test bh, bh
je 0x41007e
mov byte [ebp - 4], 2
call fcn.004363ea
mov ecx, eax
mov byte [ebp - 4], 1
test ecx, ecx
je 0x41009c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov esi, dword [ebp - 0x1c]
lea edi, [esi + 0x88]
mov byte [ebp - 4], 5
call fcn.004363ea
mov ecx, eax
mov byte [ebp - 4], 4
test ecx, ecx
je 0x4100a6
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x2c], eax
mov byte [ebp - 4], 8
call fcn.004363ea
mov ecx, eax
mov byte [ebp - 4], 7
test ecx, ecx
je 0x4100b0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 9
push eax
push edi
lea ecx, [esi + 0xbc]
call fcn.00423950
mov bl, al
lea ecx, [esi + 0xdc]
lea eax, [ebp - 0x28]
push eax
push edi
call fcn.00427270
and al, bl
lea ecx, [ebp - 0x10]
mov byte [ebp + 0xb], al
call fcn.00403d70
mov edi, dword [ebp - 0x2c]
cmp dword [edi - 0xc], 0
je 0x40ffe9
push edi
lea eax, [ebp - 0x10]
push str._r_n_s
push eax
call fcn.00406900
add esp, 0xc
mov esi, dword [ebp - 0x28]
cmp dword [esi - 0xc], 0
je 0x410004
push esi
lea eax, [ebp - 0x10]
push str._r_n_s
push eax
call fcn.00406900
add esp, 0xc
push ecx
lea ecx, [ebp - 0x10]
call fcn.00421800
lea edx, [esi - 0x10]
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x410027
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x410042
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp + 0xb], 0
mov esi, dword [ebp - 0x10]
jne 0x410066
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
call dword [eax + 0x10]
push esi
push str.Error:_ligatures_and_or_dead_chars_are_not_consistent:_r_n_s
push dword [ebp + 0xc]
xor bh, bh
call fcn.00403530
add esp, 0xc
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41007e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x48]
call fcn.0043a4d5
mov al, bh
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0x80004005
call fcn.00404410
push 0x80004005
call fcn.00404410
push 0x80004005
call fcn.00404410
int3