Function at 0x40a360
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b94a1
mov eax, dword fs:[0]
push eax
sub esp, 0x38
mov eax, dword [0x828208]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x3c], 0
cmp byte [ebx + 9], 0
je 0x40aa5f
push 0x847fb0
mov dword [0x847fb0], 0xc
call fcn.0043b5b0
add esp, 4
test eax, eax
jne 0x40a3c4
mov byte [ebx + 9], al
jmp 0x40aa5f
push str.GlobalDELL_BIOS_FLASH_LOGGING_MUTEX
push 0
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
mov dword [ebp - 0x40], eax
test eax, eax
jne 0x40a3e0
mov byte [ebx + 9], al
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x40aa56
push dword [ebx + 0xc]
lea ecx, [ebp - 0x28]
call fcn.0040bb60
mov dword [ebp - 4], 0
push 0x5c
push dword [ebp - 0x28]
call fcn.0049b503
add esp, 8
or edi, 0xffffffff
test eax, eax
je 0x40a422
sub eax, dword [ebp - 0x28]
cmp eax, edi
jne 0x40a59d
push 0x2f
push dword [ebp - 0x28]
call fcn.0049b503
add esp, 8
test eax, eax
je 0x40a43f
sub eax, dword [ebp - 0x28]
cmp eax, 0xffffffff
jne 0x40a59d
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x40a45e
mov eax, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aa7b
test ecx, ecx
jne 0x40a47a
call fcn.004022d0
mov ecx, eax
mov eax, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aa85
test ecx, ecx
je 0x40aa8f
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aa99
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea esi, [eax + 0x10]
mov dword [ebp - 0x3c], 1
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], esi
mov eax, dword [eax - 0xc]
mov dword [ebp - 0x38], eax
lea edi, [eax + 2]
test edi, edi
js 0x40aaa0
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edi
or eax, ecx
jge 0x40a4d2
push edi
lea ecx, [ebp - 0x30]
call fcn.0040c2d0
mov esi, dword [ebp - 0x30]
test esi, esi
jne 0x40a4e8
call fcn.0049ba15
mov dword [eax], 0x16
call fcn.0049b7df
jmp 0x40a4f1
mov ax, word [0x4db324]
mov word [esi], ax
mov eax, dword [ebp - 0x38]
push eax
push dword [ebp - 0x2c]
push eax
lea eax, [esi + 2]
push eax
call fcn.0040c010
add esp, 0x10
cmp edi, dword [esi - 8]
jg 0x40aaa0
mov dword [esi - 0xc], edi
mov byte [edi + esi], 0
lea edi, [esi - 0x10]
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
mov dword [ebp - 0x2c], ecx
cmp edi, ecx
je 0x40a558
cmp dword [ecx + 0xc], 0
jl 0x40a54c
mov eax, dword [edi]
cmp eax, dword [ecx]
jne 0x40a54c
push edi
call fcn.0040bfa0
mov ecx, dword [ebp - 0x2c]
add esp, 4
mov esi, eax
call fcn.0040a180
lea eax, [esi + 0x10]
mov dword [ebp - 0x28], eax
jmp 0x40a558
push dword [esi - 0xc]
lea ecx, [ebp - 0x28]
push esi
call fcn.0040c090
mov byte [ebp - 4], 0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x40a59a
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aaaa
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40aaaa
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
or edi, 0xffffffff
mov eax, dword [ebp - 0x28]
push 0
push 0x847fb0
push ecx
add eax, 0xfffffff0
mov esi, esp
push eax
mov dword [ebp - 0x2c], esi
call fcn.0040bfa0
add esp, 4
add eax, 0x10
mov dword [esi], eax
call fcn.0043b3c0
add esp, 0xc
test eax, eax
je 0x40a896
push 0x5c
push dword [ebp - 0x28]
call fcn.0049b503
mov ecx, dword [ebp - 0x28]
add esp, 8
mov ebx, eax
sub ebx, ecx
test eax, eax
cmove ebx, edi
xor esi, esi
test ebx, ebx
cmovns esi, ebx
cmp esi, dword [ecx - 0xc]
jl 0x40a607
add ecx, 0xfffffff0
push ecx
call fcn.0040bfa0
add esp, 4
lea edi, [eax + 0x10]
mov dword [ebp - 0x38], edi
jmp 0x40a644
mov edx, dword [ecx - 0x10]
test edx, edx
je 0x40a61f
mov eax, dword [edx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aab1
test edx, edx
jne 0x40a636
call fcn.004022d0
mov edx, eax
mov eax, dword [edx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aac0
mov ecx, dword [ebp - 0x28]
push edx
push esi
push ecx
lea ecx, [ebp - 0x38]
call fcn.0040bd10
mov edi, dword [ebp - 0x38]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x28]
mov esi, dword [eax - 0xc]
mov ecx, esi
sub ecx, ebx
xor ebx, ebx
add ecx, 0xffffffff
cmovns ebx, ecx
cmp ebx, esi
jl 0x40a672
add eax, 0xfffffff0
push eax
call fcn.0040bfa0
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x3c], esi
jmp 0x40a6c3
mov edx, dword [eax - 0x10]
test edx, edx
je 0x40a694
mov ecx, dword [edx]
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x28]
cmp ecx, vtable.ATL::CAtlStringMgr.0
jne 0x40aacc
test edx, edx
jne 0x40a6b1
call fcn.004022d0
mov edx, eax
mov eax, dword [edx]
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x2c], ecx
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aadb
mov eax, dword [ebp - 0x28]
push edx
sub esi, ebx
lea ecx, [ebp - 0x3c]
push ebx
add esi, eax
push esi
call fcn.0040bd10
mov esi, dword [ebp - 0x3c]
push 0
push 0x847fb0
push ecx
add edi, 0xfffffff0
mov byte [ebp - 4], 3
mov ebx, esp
mov dword [ebp - 0x30], edi
push edi
mov dword [ebp - 0x2c], ebx
call fcn.0040bfa0
add esp, 4
add eax, 0x10
mov dword [ebx], eax
call fcn.0043b5e0
add esp, 0xc
test eax, eax
jne 0x40a7ff
push eax
mov eax, dword [ebp - 0x28]
push 0x847fb0
push ecx
add eax, 0xfffffff0
mov edi, esp
push eax
mov dword [ebp - 0x2c], edi
call fcn.0040bfa0
add esp, 4
add eax, 0x10
mov dword [edi], eax
call fcn.0043b3c0
add esp, 0xc
test eax, eax
jne 0x40a7fc
push eax
push 0x80
push 3
push 0x847fb0
push eax
push 0x40000000
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [0x828d20], eax
cmp eax, 0xffffffff
je 0x40a7fc
or edi, 0xffffffff
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40a79d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aae7
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40aae7
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call ebx
jmp 0x40a7a3
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0
mov eax, edi
mov ecx, dword [ebp - 0x30]
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40a7e3
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aaee
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40aaee
push 0
push dword [edx + 4]
call ebx
cmp dword [0x828d20], 0xffffffff
jne 0x40a912
mov eax, dword [ebp - 0x34]
mov byte [eax + 9], 0
jmp 0x40aa0e
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x34]
or ebx, 0xffffffff
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov byte [eax + 9], 0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40a851
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aaf7
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40aaf7
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call esi
jmp 0x40a857
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x40a8c1
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40aafe
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40aafe
push 0
push dword [ecx + 4]
call esi
jmp 0x40a8c1
push 0
push 0x80
push 3
push 0x847fb0
push 0
push 4
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [0x828d20], eax
cmp eax, 0xffffffff
jne 0x40a915
mov byte [ebx + 9], 0
or ebx, eax
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x40aa5f
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40ab05
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40ab05
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x40aa5f
mov ebx, dword [ebp - 0x34]
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [ebp - 0x18]
push eax
movzx eax, word [ebp - 0x1a]
push eax
movzx eax, word [ebp - 0x1c]
push eax
movzx eax, word [ebp - 0x24]
push eax
movzx eax, word [ebp - 0x1e]
push eax
movzx eax, word [ebp - 0x22]
push eax
push str._n_nDell_Firmware_Update_started_on__d__d__d_at__d:_02d:_02d_n
push ebx
call fcn.0040abf0
mov ebx, dword [ebx + 0x18]
add esp, 0x20
test ebx, ebx
je 0x40a9f3
lea ecx, [ebx + 1]
nop dword [eax]
mov al, byte [ebx]
inc ebx
test al, al
jne 0x40a960
mov ax, word [0x4db73c]
lea edi, [ebp - 0x30]
mov word [ebp - 0x30], ax
sub ebx, ecx
mov al, byte [0x4db73e]
lea ecx, [edi + 1]
mov byte [ebp - 0x2e], al
mov al, byte [edi]
inc edi
test al, al
jne 0x40a981
sub edi, ecx
mov esi, 0x8489e0
cmp byte [0x8489e0], al
je 0x40a9f0
push edi
lea eax, [ebp - 0x30]
push eax
push esi
call fcn.0049b840
add esp, 0xc
test eax, eax
je 0x40a9b1
inc esi
cmp byte [esi], 0
jne 0x40a997
jmp 0x40a9f0
add esi, edi
cmp byte [esi], 0x22
mov byte [esi], 0x20
jne 0x40a9c1
mov al, byte [esi + 1]
inc esi
jmp 0x40a9c3
mov al, 0x20
xor edx, edx
mov ecx, esi
test al, al
je 0x40a9e1
nop dword [eax + eax]
cmp al, 0x20
jne 0x40a9d8
cmp edx, ebx
jae 0x40a9e1
mov al, byte [ecx + 1]
inc ecx
inc edx
test al, al
jne 0x40a9d0
sub esi, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [esi + ecx - 1], al
test al, al
jne 0x40a9e3
or edi, 0xffffffff
mov eax, dword [ebp - 0x34]
push 0x8489e0
push 0x8487d0
push str.Command:__s__s_n_n
push eax
call fcn.0040abf0
add esp, 0x10
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], edi
dec edi
test edi, edi
jg 0x40aa56
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x40ab0e
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40ab0e
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0048980e
mov esp, ebp
pop ebp
ret
call dword [eax + 0x10]
mov ecx, eax
jmp 0x40a45a
call dword [eax + 0x10]
mov ecx, eax
jmp 0x40a472
push 0x80004005
call fcn.0040a0f0
call edx
jmp 0x40a491
push 0x80070057
call fcn.0040a0f0
call edx
jmp 0x40a59a
mov ecx, edx
call dword [eax + 0x10]
mov ecx, dword [ebp - 0x28]
mov edx, eax
jmp 0x40a61b
mov ecx, edx
call dword [eax + 0x10]
mov edx, eax
jmp 0x40a633
mov ecx, edx
call dword [ebp - 0x2c]
mov edx, eax
mov eax, dword [ebp - 0x28]
jmp 0x40a690
mov ecx, edx
call dword [ebp - 0x2c]
mov edx, eax
jmp 0x40a6ae
call edx
jmp 0x40a79d
mov ecx, edx
call esi
jmp 0x40a7e3
call edx
jmp 0x40a851
call edx
jmp 0x40a8c1
mov ecx, edx
call esi
jmp 0x40aa5f
mov ecx, edx
call esi
jmp 0x40aa56