Function at 0x464874
Capabilities:
Extract resource via kernel32 functions
Read file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff98
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x64], ecx
mov esi, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x464f20
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 5], 0
push 0
mov eax, esi
call fcn.00404ef0
mov ebx, eax
push ebx
call sub.kernel32.dll_BeginUpdateResourceA
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jbe 0x464f05
xor edx, edx
push ebp
push 0x464efe
push dword fs:[edx]
mov dword fs:[edx], esp
mov dl, 1
mov eax, dword [0x417044]
call fcn.00403c74
mov dword [ebp - 0x30], eax
xor edx, edx
push ebp
push 0x464ed6
push dword fs:[edx]
mov dword fs:[edx], esp
mov dl, 1
mov eax, dword [0x416c28]
call fcn.00403c74
mov dword [ebp - 0x34], eax
xor edx, edx
push ebp
push 0x464eb9
push dword fs:[edx]
mov dword fs:[edx], esp
push 2
push 0
push ebx
call sub.kernel32.dll_LoadLibraryExA_1
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x464ea3
xor edx, edx
push ebp
push 0x464e9c
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx + 0x44]
mov eax, dword [ebp - 0x30]
push eax
push 0x463c84
push 0xe
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_EnumResourceNamesA
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x464b1d
lea ecx, [ebp - 0x64]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0xc]
cmp dword [ebp - 0x64], 0
jne 0x464975
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov dword [ebp - 0x1c], eax
jmp 0x46498d
lea ecx, [ebp - 0x68]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0x68]
call fcn.00404ef0
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [ebp - 0x34]
push eax
push 0x463c6c
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_EnumResourceLanguagesA
test eax, eax
jne 0x4649ca
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x464b22
inc eax
mov dword [ebp - 0x3c], eax
xor edi, edi
mov edx, edi
mov eax, dword [ebp - 0x34]
call fcn.00418f90
mov word [ebp - 0x1e], ax
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_FindResourceExA
test eax, eax
jne 0x464a1e
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
push eax
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_LoadResource
mov ebx, eax
test ebx, ebx
jne 0x464a47
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
push ebx
call sub.kernel32.dll_LockResource
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jne 0x464a6f
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
mov eax, dword [ebp - 0x2c]
movzx ebx, word [eax + 4]
dec ebx
test ebx, ebx
jl 0x464adc
inc ebx
mov dword [ebp - 0xc], 0
mov eax, dword [ebp - 0xc]
mov edx, eax
shl eax, 3
sub eax, edx
mov edx, dword [ebp - 0x2c]
push esi
push edi
lea esi, [edx + eax*2 + 6]
lea edi, [ebp - 0x60]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop edi
pop esi
push 0
push 0
mov ax, word [ebp - 0x1e]
push eax
movzx eax, word [ebp - 0x54]
push eax
push 3
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
test eax, eax
jne 0x464ad6
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
inc dword [ebp - 0xc]
dec ebx
jne 0x464a83
push 0
push 0
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
test eax, eax
jne 0x464b11
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
inc edi
dec dword [ebp - 0x3c]
jne 0x4649df
jmp 0x464b22
xor eax, eax
mov dword [ebp - 0x1c], eax
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebp - 4]
call fcn.00404ef0
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jbe 0x464e85
xor edx, edx
push ebp
push 0x464e7e
push dword fs:[edx]
mov dword fs:[edx], esp
push 0
lea eax, [ebp - 0x38]
push eax
push 0x16
lea eax, [ebp - 0x52]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0x464b94
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
push 0
push 0
push 0
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_SetFilePointer_1
cmp eax, 0xffffffff
jne 0x464bc6
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
movzx eax, word [ebp - 0x4e]
shl eax, 4
add eax, 0x16
call fcn.00402a88
mov dword [ebp - 0x28], eax
xor edx, edx
push ebp
push 0x464e60
push dword fs:[edx]
mov dword fs:[edx], esp
movzx eax, word [ebp - 0x4e]
imul eax, eax, 0xe
add eax, 0x14
call fcn.00402a88
mov dword [ebp - 0x2c], eax
xor edx, edx
push ebp
push 0x464e43
push dword fs:[edx]
mov dword fs:[edx], esp
push 0
lea eax, [ebp - 0x38]
push eax
movzx eax, word [ebp - 0x4e]
shl eax, 4
add eax, 0x16
push eax
mov eax, dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0x464c50
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
mov eax, dword [ebp - 0x28]
mov ax, word [eax]
mov edx, dword [ebp - 0x2c]
mov word [edx], ax
mov eax, dword [ebp - 0x28]
mov ax, word [eax + 2]
mov edx, dword [ebp - 0x2c]
mov word [edx + 2], ax
mov eax, dword [ebp - 0x28]
mov ax, word [eax + 4]
mov edx, dword [ebp - 0x2c]
mov word [edx + 4], ax
mov eax, esi
call fcn.00463ba8
mov word [ebp - 0x1e], ax
movzx eax, word [ebp - 0x4e]
dec eax
test eax, eax
jl 0x464df4
inc eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp - 0xc]
mov edx, eax
shl eax, 3
sub eax, edx
mov edx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0xc]
add ebx, ebx
mov ecx, dword [ebp - 0x28]
mov esi, dword [ecx + ebx*8 + 6]
mov dword [edx + eax*2 + 6], esi
mov esi, dword [ecx + ebx*8 + 0xa]
mov dword [edx + eax*2 + 0xa], esi
mov esi, dword [ecx + ebx*8 + 0xe]
mov dword [edx + eax*2 + 0xe], esi
mov edx, dword [ebp - 0x2c]
mov cx, word [ebp - 0xc]
inc ecx
mov word [edx + eax*2 + 0x12], cx
mov eax, dword [ebp - 0x28]
mov esi, dword [eax + ebx*8 + 0xe]
mov eax, esi
call fcn.00402a88
mov dword [ebp - 0x24], eax
xor eax, eax
push ebp
push 0x464de1
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + ebx*8 + 0x12]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_SetFilePointer_1
cmp eax, 0xffffffff
jne 0x464d3b
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
push 0
lea eax, [ebp - 0x38]
push eax
push esi
mov eax, dword [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0x464d80
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
push esi
mov eax, dword [ebp - 0x24]
push eax
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0xc]
inc eax
push eax
push 3
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
test eax, eax
jne 0x464dcb
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464f05
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464de8
mov eax, dword [ebp - 0x24]
call fcn.00402ab8
ret
cmp dword [ebp - 0x1c], 0
jne 0x464e01
mov dword [ebp - 0x1c], 1
movzx eax, word [ebp - 0x4e]
imul eax, eax, 0xe
add eax, 0x14
push eax
mov eax, dword [ebp - 0x2c]
push eax
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 5], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464e4a
mov eax, dword [ebp - 0x2c]
call fcn.00402ab8
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464ea3
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464ec0
mov eax, dword [ebp - 0x34]
call fcn.00403ca4
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464f27
lea eax, [ebp - 0x68]
mov edx, 2
call fcn.00404a54
ret